Imported Upstream version 1.4.4
diff --git a/ChangeLog b/ChangeLog
index 7414bb4..7948c32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,882 @@
-=== release 1.4.3 ===
+=== release 1.4.4 ===
-2014-09-24 Sebastian Dröge <slomo@coaxion.net>
+2014-11-06 Sebastian Dröge <slomo@coaxion.net>
* configure.ac:
- releasing 1.4.3
+ releasing 1.4.4
+
+2014-11-06 11:53:04 +0100 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/videoparsers/gsth265parse.c:
+ h265parse: don't unnecesarily set src_caps
+ https://bugzilla.gnome.org/show_bug.cgi?id=739374
+
+2014-10-29 22:55:47 +0100 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: don't unnecesarily set src_caps
+ https://bugzilla.gnome.org/show_bug.cgi?id=739374
+
+2014-10-31 12:52:50 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ * ext/gl/gstglimagesink.h:
+ glimagesink: resize the viewport correctly on a caps change
+ with force-aspect-ratio=true, if the width or height changed, the
+ viewport wasn't being updated to respect the new video width and height
+ until a resize occured.
+
+2014-11-04 09:52:11 +0100 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ gl/cocoa: include gl3.h in configure too for consistency with gstglapi.h
+
+2014-11-03 23:24:33 +0000 Julien Isorce <julien.isorce@gmail.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: use NSAutoreleasePool to free resize data
+ Otherwise when resizing the window you will also get messages like:
+ class NSConcreteMapTable autoreleased with no pool in place - just leaking
+ class NSConcreteValue autoreleased with no pool in place - just leaking
+ class NSConcreteValue autoreleased with no pool in place - just leaking
+ class __NSCFDictionary autoreleased with no pool in place - just leaking
+
+2014-11-03 23:08:09 +0000 Julien Isorce <julien.isorce@gmail.com>
+
+ * gst-libs/gst/gl/gstglapi.h:
+ gl/cocoa: include gl3.h to have GL_CONTEXT_PROFILE_MASK
+
+2014-11-03 23:07:34 +0000 Julien Isorce <julien.isorce@gmail.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: make sure to turn on frame rectangle changes notifications
+ Default value of property postsFrameChangedNotifications is YES
+ but it is worth to explicitly enable it.
+
+2014-11-03 23:02:17 +0000 Julien Isorce <julien.isorce@gmail.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: fix uncaught exception 'unrecognized selector sent to instance'
+ Need to set the ':' as the reshape method now takes one parameter.
+ For the story, the GstGLNSView was previously inheriting from
+ NSOpenGLView which has a reshape function without any parameter.
+ Now the GstGLNSView inherits from NSView and we re-use the reshape
+ function manually.
+
+2014-11-03 22:59:41 +0000 Julien Isorce <julien.isorce@gmail.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: fix compiler warning
+ Use the reshape function after being defined. The other way
+ would have been to declare the reshape function in the header.
+ gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
+ gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
+ gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
+ gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
+ gstglwindow_cocoa.m:555: warning: '...' as arguments.)
+
+2014-10-21 16:21:08 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Fix compiler warning
+ gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
+ gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
+ gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
+ gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
+ gstglwindow_cocoa.m:555: warning: '...' as arguments.)
+
+2014-10-29 18:18:07 +0000 Luis de Bethencourt <luis.bg@samsung.com>
+
+ * gst-libs/gst/gl/gstglshadervariables.c:
+ glshader: Fix memory leak
+ Memory is only freed in the TRUE clause of the if conditional. Free in the else
+ clause as well.
+ Also, consolidate g_malloc + sprintf into a g_strdup_printf().
+ CID #1212171
+ https://bugzilla.gnome.org/show_bug.cgi?id=739368
+
+2014-10-31 12:30:53 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ * gst-libs/gst/gl/gstgldisplay.c:
+ * gst-libs/gst/gl/gstglwindow.c:
+ gl: sprinkle some Since markers
+
+2014-10-24 16:52:42 +0200 Matthieu Bouron <matthieu.bouron@collabora.com>
+
+ * gst/mpegtsdemux/mpegtsbase.c:
+ mpegtsbase: do not remove programs on EOS
+ As a consequence, tsdemux won't remove its pads anymore on EOS.
+ Fixes the case when mpegtsbase is not able to process new packets
+ after EOS as the corresponding pids aren't known anymore because
+ the programs were removed and the pes/psi were kept, preventing the
+ PAT to be parsed again.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738695
+ Conflicts:
+ gst/mpegtsdemux/mpegtsbase.c
+
+2014-10-30 19:01:20 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/examples/gl/sdl/sdlshare.c:
+ gl/examples: use the current X Display from SDL
+ allows GL context sharing to occur.
+
+2014-10-29 10:09:35 +0100 Vincent Abriou <vincent.abriou@st.com>
+
+ * configure.ac:
+ configure.ac: auto decision to include GL library fails
+ The part of the configure.ac that consist to check if we
+ can include both GL and GLES2 at the same time is failing.
+ Indeed, in the case NEED_GLES2=yes and NEED_OPENGL=auto,
+ HAVE_OPENGL variable is updated whereas it should be HAVE_GL
+ variable that has to be updated (HAVE_OPENGL variable is not
+ used in the rest of the configure.ac).
+ https://bugzilla.gnome.org/show_bug.cgi?id=739348
+ Signed-off-by: Vincent Abriou <vincent.abriou@st.com>
+ Reviewed-by: Benjamin GAIGNARD <benjamin.gaignard@linaro.org>
+
+2014-10-28 17:44:47 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/faad/gstfaad.c:
+ faad: fix wrong unrefs in set_format error code path
+
+2014-10-28 18:01:27 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglfilter.c:
+ glfilter: avoid uninitialized variable size when chaining multiple glfilters
+ https://bugzilla.gnome.org/show_bug.cgi?id=739277
+
+2014-10-23 17:42:27 +0300 Vootele Vesterblom <vov@bang-olufsen.dk>
+
+ * gst/rawparse/gstrawparse.c:
+ rawparse: fix handling of segment event in sink event handler
+
+2014-10-22 15:07:04 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rawparse/gstrawparse.c:
+ rawparse: Check for 0-size after adjusting the size for the frame size
+ If we don't have a complete raw audio frame we would otherwise still
+ ask for a 0 sized buffer from the adapter.
+
+2014-10-22 14:43:50 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rawparse/gstrawparse.c:
+ rawparse: Don't try to retrieve 0 byte buffers from the adapter in multi-frame mode
+
+2014-10-21 12:39:14 +0200 Matthieu Bouron <matthieu.bouron@collabora.com>
+
+ * ext/hls/gsthlsdemux.c:
+ hlsdemux: reset end_of_playlist attribute when we receive a seek
+ https://bugzilla.gnome.org/show_bug.cgi?id=738696
+
+2014-10-09 15:12:01 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * tests/check/libs/vc1parser.c:
+ vc1parser: fix expected level in sequence-layer parsing unit test
+ Sequence-layer used for unit test have a level set to 2 which should
+ match the medium level, not the high.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738230
+
+2014-10-09 15:05:55 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst-libs/gst/codecparsers/gstvc1parser.h:
+ vc1parser: fix level values for simple/main profile
+ In simple profile, level set to 0 or 2 indicate low and medium level
+ respectively. In main profile, level set to 0, 2 or 4 indicate low,
+ medium and high level respectively.
+ Level values are defined in Annex J.1.2 of the SMPTE 421M.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738230
+
+2014-10-01 16:17:46 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst/videoparsers/gstvc1parse.c:
+ * gst/videoparsers/gstvc1parse.h:
+ vc1parse: select caps according to wmv format at negotiation
+ Some VC1 decoder can have different caps according to wmv format, ie
+ WMV3 or WVC1.
+ So instead of keeping the first available caps, we interserct with
+ current WMV format.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738532
+
+2014-10-20 09:47:27 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/rtmp/gstrtmpsink.c:
+ rtmpsink: Declare sink variable that was forgotten in last commit
+
+2014-10-19 20:35:41 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * ext/rtmp/gstrtmpsink.c:
+ rtmpsink: Free URI string in finalize()
+ https://bugzilla.gnome.org/show_bug.cgi?id=738674
+
+2014-09-22 09:44:14 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst/videoparsers/gstvc1parse.c:
+ vc1parse: parse frame header when stream format is ASF/raw for simple/main profile
+ When stream-format is ASF or sequence-layer-raw-frame, we basically have
+ a raw frame so we can parse it to extract some information such the
+ keyframe flag. The only requirement is to have a valid sequence-header.
+ This commit parse the frame header and set the DELTA_UNIT buffer flag in
+ case the frame is not a keyframe.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738519
+
+2014-10-13 14:05:24 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst/videoparsers/gstvc1parse.c:
+ vc1parse: just assume none header-format when no codec_data is present
+ https://bugzilla.gnome.org/show_bug.cgi?id=738449
+
+2014-10-09 18:18:02 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst/videoparsers/gstvc1parse.c:
+ vc1parse: fix framesize when input is frame-layer
+ frame-layer header is represented as a sequence of 32 bit unsigned
+ integer serialized in little-endian byte order, so framesize is on the
+ first 3 bytes.
+ SMPTE 421M Annex L.
+ https://bugzilla.gnome.org/show_bug.cgi?id=738243
+
+2014-10-10 13:05:49 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/fluidsynth/gstfluiddec.c:
+ fluiddec: don't leak incoming caps event
+ https://bugzilla.gnome.org/show_bug.cgi?id=738291
+
+2014-10-09 11:51:16 +0200 Antonio Ospite <ao2@ao2.it>
+
+ * ext/fluidsynth/gstfluiddec.c:
+ fluiddec: fix some memory leaks
+ https://bugzilla.gnome.org/show_bug.cgi?id=738223
+
+2014-10-21 15:42:32 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Fix locking
+ The object lock only protects the session, as we modify
+ the session from other threads when the bitrate property
+ is changed. Don't hold it much longer than for session
+ related things.
+ And we need to release the video decoder stream lock before
+ enqueueing a frames. It might wait for our callback to dequeue
+ a frame from another thread, which will then take the stream
+ lock too and deadlock.
+
+2014-10-19 14:57:43 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Use kVTProfileLevel_H264_Baseline_AutoLevel only on iOS
+ It is not required on OSX apparently and was only added in 10.9.6 there.
+ Calculating the correct level from the configuration is not trivial, so let's
+ just not set a level at all here.
+
+2014-10-19 14:51:40 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ * sys/applemedia/vtenc.c:
+ vtenc: VTCompressionSessionPrepareToEncodeFrames only exists since 10.9.6
+ Check with configure for it instead of using one of the availability macros
+ as those wouldn't work as expected with minor versions.
+
+2014-10-19 14:32:31 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Remove unused #define
+
+2014-10-13 13:28:57 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ glimagesink: Only finalize the other context in finalize()
+ Otherwise we change a value of a property when going to READY state,
+ which is unexpected behaviour.
+
+2014-10-13 11:56:03 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ glimagesink: Don't leak other-context
+
+2014-10-13 13:27:55 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/gl/gstglmixer.c:
+ glmixer: Call the pad's parent class finalize method
+
+2014-10-09 10:54:35 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Add support for HiDPI displays
+ Without this our GL surface would be upscaled after rendering
+ by Cocoa, which would reduce image quality.
+
+2014-10-01 16:04:36 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Always update our viewport if Cocoa tells us something has changed
+ The visible rect and bounds might be the same as before, but Cocoa
+ might've changed our viewport without us nothing. This happens if
+ you hide the view and show it again.
+
+2014-10-01 11:55:13 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Handle NSView::renewGState() properly
+ Don't update the screen until we redraw, this prevents flickering during
+ scrolling, clipping, resizing, etc
+
+2014-09-29 09:33:42 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Update viewport according to the current clipping
+ We have to update the GL viewport if the NSView is only partially
+ visible. Otherwise the content of the frame will be visibly offset.
+
+2014-09-29 10:49:46 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+ gl/cocoa: Improve the NSApplication initialization
+ This is only for non-Cocoa apps but previously caused a 2 second
+ waiting during startup for Cocoa apps. This is unacceptable.
+ Instead we now check a bit more extensive if something actually
+ runs on the GLib default main context, and if not don't even
+ bother waiting for something to happen from there.
+
+2014-09-29 09:24:49 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: NSView::drawRect() should call into reshape too
+ We a) need to render again because part of the window was
+ obscured and b) might need to reshape because of clipping
+ changes.
+
+2014-09-26 14:21:46 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Call UI related API from the application main thread
+
+2014-09-26 13:05:27 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h:
+ * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Switch to a plain NSView subclass instead of NSOpenGLView
+ We don't and can't use NSOpenGLView as it's supposed to be used and
+ it gets into our way by being to clever in various situations.
+
+2014-09-25 16:13:19 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h:
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/cocoa: Switch from our custom main loop to a GMainLoop
+ Simplifies code a lot and makes it more similar to the other backends.
+
+2014-09-25 16:12:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+ gl/cocoa: Clear the current GL context when it should happen
+
+2014-10-14 09:58:47 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ applemedia: VideoToolbox works properly on iOS now
+
+2014-10-14 09:19:59 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: Set reorder length to 0 if we can't calculate it
+ Instead of leaving it at whatever value it had before.
+
+2014-09-19 14:36:39 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Fix encoder to work on iOS
+ iOS has special stride requirements that we don't know yet, so copy
+ input buffers into buffers allocated by iOS for now.
+ Later we should check the stride and probably provide a buffer pool for these
+ buffers so upstream can directly write in there.
+
+2014-09-19 14:32:46 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/coremediabuffer.c:
+ * sys/applemedia/corevideobuffer.c:
+ applemedia: We need to map the coremedia buffers in non-readonly mode
+ Our buffers claim to be writable so other elements expect to be able
+ to write there without losing their changes.
+
+2014-09-18 17:49:46 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Let the encoder automatically choose a h264 level
+ We should negotiate these things via caps...
+
+2014-09-18 13:45:33 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Use 0 instead of G_MAXDOUBLE as the max keyframe interval
+ 0 means no limit, which was meant here with G_MAXDOUBLE probably.
+
+2014-09-18 13:42:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Expected duration is supposed to be the duration of the stream, not a frame
+ Just don't set it for now, it isn't really needed.
+
+2014-09-18 13:11:05 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ * sys/applemedia/vtenc.h:
+ vtenc: Properly handle keyframes
+ Especially set the SYNC_POINT flag on keyframes.
+
+2014-09-18 10:30:04 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: Fix compilation
+
+2014-09-18 09:47:06 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: Handle 0/1 framerates correctly by not calculating their frame duration
+
+2014-09-17 17:37:12 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/atdec.c:
+ atdec: Fix some compiler warnings with newer clang
+
+2014-09-17 17:10:58 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Prepare encoder after setup
+ This will allow encoding to happen faster on the first frame.
+
+2014-09-17 17:08:57 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ * sys/applemedia/vtenc.h:
+ vtenc: Only drain the encoder in ::finish(), not on every frame
+ Otherwise quality and bitrate will be bad.
+
+2014-09-17 15:39:26 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Error out if encoding returned an error
+ Otherwise we will just continue consuming frames until all memory is filled
+ up and the app crashes.
+
+2014-09-17 14:56:05 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Check for errors from VTCompressionSessionCompleteFrames()
+
+2014-09-17 14:55:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Properly scale timestamps for the API and set invalid values
+
+2014-09-17 14:54:39 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: Properly scale timestamps for the API and set invalid values
+
+2014-09-17 13:19:04 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/Makefile.am:
+ * sys/applemedia/plugin.m:
+ * sys/applemedia/vth264decbin.c:
+ * sys/applemedia/vth264decbin.h:
+ * sys/applemedia/vth264encbin.c:
+ * sys/applemedia/vth264encbin.h:
+ applemedia: Remove old code that is of no use anymore
+
+2014-09-17 10:38:20 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/Makefile.am:
+ * sys/applemedia/plugin.m:
+ applemedia: Do weak linking with the VideoToolbox framework
+ It does not exist on older OSX and iOS but we still want to
+ be able to use it when it's available.
+
+2014-09-16 16:51:28 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ * sys/applemedia/vtenc.h:
+ vtenc: Port to GstVideoEncoder base class
+
+2014-09-16 16:13:16 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtenc.c:
+ vtenc: Use correct instance struct size
+
+2014-09-16 15:48:11 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: Fix compiler warnings
+ values of type 'OSStatus' should not be used as format arguments; add an explicit cast to 'int' instead [-Wformat]
+
+2014-09-16 15:02:46 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/Makefile.am:
+ * sys/applemedia/coremediactx.c:
+ * sys/applemedia/coremediactx.h:
+ * sys/applemedia/dynapi-internal.h:
+ * sys/applemedia/dynapi.c:
+ * sys/applemedia/dynapi.h:
+ * sys/applemedia/mtapi.c:
+ * sys/applemedia/mtapi.h:
+ * sys/applemedia/vtapi.c:
+ * sys/applemedia/vtapi.h:
+ * sys/applemedia/vtenc.c:
+ * sys/applemedia/vtenc.h:
+ vtenc: Port to the real VideoToolbox API instead of using our dlopen() wrapper
+ It's a public framework since a long time.
+
+2014-10-09 01:18:16 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: expose parsed profile and level to downstream
+ Set parsed profile and level in src caps.
+ https://bugzilla.gnome.org/show_bug.cgi?id=732239
+
+2014-10-09 11:46:23 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/videoparsers/gsth265parse.c:
+ h265parse: expose parsed profile, tier and level to downstream
+ https://bugzilla.gnome.org/show_bug.cgi?id=732239
+
+2014-10-06 21:25:30 +0300 Vivia Nikolaidou <n.vivia@gmail.com>
+
+ * ext/curl/gstcurlsmtpsink.c:
+ curlsmtpsink: Set CURLOPT_UPLOAD to 1 to not use VRFY and other unneeded commands
+ Fixes the sink with SMTP servers that disable VRFY for spam protection.
+ http://sourceforge.net/p/curl/bugs/1389/
+
+2014-10-06 10:11:47 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ videoaggregator: Unmap and free GstVideoFrames as needed after conversion and errors
+
+2014-10-06 10:11:23 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Unref the taglist in GstAggregator::stop()
+
+2014-10-01 16:19:02 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+ * gst/videoparsers/gstvc1parse.c:
+ vc1parse: unref caps when it is empty in renegotiate()
+ https://bugzilla.gnome.org/show_bug.cgi?id=737724
+
+2014-10-02 10:26:43 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/androidmedia/gstamc.c:
+ androidmedia: Fix calculation of the frame size for COLOR_FormatYUV420Planar
+ https://bugzilla.gnome.org/show_bug.cgi?id=734156
+
+2014-10-01 00:53:59 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/fluidsynth/gstfluiddec.c:
+ fluiddec: don't crash on 0-sized input buffers
+ https://bugzilla.gnome.org/show_bug.cgi?id=737658
+
+2014-09-30 14:58:06 +0200 Lubosz Sarnecki <lubosz@gmail.com>
+
+ * configure.ac:
+ gltransformation: requires graphene 1.0.0
+
+2014-09-29 10:01:27 +0200 Jesper Larsen <knorr.jesper@gmail.com>
+
+ * gst/mpegtsdemux/tsdemux.c:
+ tsdemux: do not discard on discont if PES start
+ If a discontinuity in the stream is detected, data is discarded until
+ a new PES starts. If the first packet after the discontinuity is also
+ the start of a PES, there is no reason to discard the packets.
+ https://bugzilla.gnome.org/show_bug.cgi?id=737569
+
+2014-09-09 13:12:31 +0200 Matthieu Bouron <matthieu.bouron@collabora.com>
+
+ * ext/dash/gstdashdemux.c:
+ * ext/dash/gstdashdemux.h:
+ dashdemux: mark first buffer as discont after restarting a download task
+ Mark first buffer as discont after restarting a download task, so
+ downstream can reset its state to properly handle the new fragment.
+ Related issue: https://bugzilla.gnome.org/show_bug.cgi?id=736318
+ https://bugzilla.gnome.org/show_bug.cgi?id=736319
+
+2014-09-19 22:32:39 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * ext/dash/gstdashdemux.c:
+ dashdemux: push a time segment when restarting streaming
+ This should inform demuxers/decoders downstream that the stream is
+ about to start from a new position and they should flush accordingly
+ https://bugzilla.gnome.org/show_bug.cgi?id=736319
+
+2014-10-09 12:28:11 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: output why we cannot convert a buffer
+
+2014-10-09 12:25:55 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: fix planar YUV download
+ - sample the u and v planes properly
+ - output the correctly scaled u and v planes for different chroma block sizes
+
+2014-10-07 23:04:30 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: fix UYVY download green screen
+
+2014-10-07 22:50:22 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolrconvert: fix YUY2 download
+ - The shader was outputing the wrong values compared with raw
+ videotestsrc.
+ - deal with the texture edge properly.
+ - properly sample the 2x1 rectangle for the u and v values
+ - don't double sample the y value
+
+2014-09-25 17:01:31 +0200 Lubosz Sarnecki <lubosz@gmail.com>
+
+ * ext/gl/gstgltransformation.c:
+ gltransformation: graphene multiplication order has changed
+ https://bugzilla.gnome.org/show_bug.cgi?id=733510
+
+2014-09-22 10:08:17 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ gl: Let gst_gl_context_get_thread() return a new reference to the GThread
+ Otherwise it might go away in the meantime and the caller has some random pointer.
+ Conflicts:
+ gst-libs/gst/gl/gstglcontext.c
+
+2014-09-30 14:46:14 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: convert xRGB into ARGB properly
+ The alpha channel might not be the last component so check which one
+ it is in and clobber that one instead.
+
+2014-09-30 01:38:05 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglmemory.c:
+ glmemory: unset the opposite corresponding transfer flags when mapped with write
+ fixes consistency with consecutive gst_memory_map()'s with
+ flags & GST_MAP_WRITE
+
+2014-09-29 08:54:29 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ glcontext: Initialize variable
+ Avoids the following warning:
+ gstglcontext.c:647:58: error: 'prev' may be used uninitialized in
+ this function [-Werror=maybe-uninitialized]
+
+2014-09-29 00:32:05 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ glcontext: fixup error in sharegroup comment
+
+2014-09-29 00:24:28 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ glcontext: detect the sharegroup case where the context are in different chains
+ In the end they will lead to the same root context in the tree so check that
+ for equality.
+
+2014-09-23 12:02:18 +1000 Matthew Waters <ystreet00@gmail.com>
+
+ * gst-libs/gst/gl/gstglupload.c:
+ glupload: fallback to upload if contexts cannot share GL resources
+ Fixes pipelines of the form
+ gleffects ! tee ! glimagesink
+ as tee does not pass on the allocation query.
+
+2014-09-23 12:01:04 +1000 Matthew Waters <ystreet00@gmail.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/gl/gstglcontext.c:
+ * gst-libs/gst/gl/gstglcontext.h:
+ glcontext: add gst_gl_context_can_share
+ Which determines whether two GstGLContext's can share sharable
+ OpenGL resources.
+ Conflicts:
+ gst-libs/gst/gl/gstglcontext.c
+
+2014-09-21 21:30:58 +1000 Matthew Waters <ystreet00@gmail.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/gl/gstglcontext.c:
+ * gst-libs/gst/gl/gstglcontext.h:
+ glcontext: add API to retreive the thread that context is active in
+
+2014-09-24 14:29:37 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglvideomixer.c:
+ glvideomixer: skip input frames with an alpha of 0
+
+2014-09-24 13:13:19 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglmixer.c:
+ * ext/gl/gstglmixer.h:
+ * ext/gl/gstgltestsrc.c:
+ * ext/gl/gstgltestsrc.h:
+ * gst-libs/gst/gl/gstglfilter.c:
+ * gst-libs/gst/gl/gstglfilter.h:
+ gl: download whenever we have sysmem capsfeatures
+ Otherwise we could pass on a RGBA formatted buffer and downstream would
+ misinterpret that as some other video format.
+ Fixes pipelines of the form
+ gleffects ! tee ! xvimagesink
+
+2014-09-29 11:44:54 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ configure: Don't build VideoToolbox elements on iOS for now
+ They're only ported properly in master.
+
+2014-09-26 01:34:54 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglvideomixer.c:
+ glvideomixer: fix blending with low-alpha sources
+ We also need to apply the blend paramaters to the alpha channel otherwise
+ the output of the blend will appear black at low alpha values (< 0.2).
+
+2014-07-29 16:12:26 +0200 Thibault Saunier <tsaunier@gnome.org>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: Return flushing if we get chained while being set to READY
+ Or not negotiated in the case we would be actually not negotiated
+ Currently we are getting assertions from
+ gst_pb_utils_add_codec_description_to_tag_list because of NULL
+ caps.
+ https://bugzilla.gnome.org/show_bug.cgi?id=737186
+
+=== release 1.4.3 ===
+
+2014-09-24 12:43:28 +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-asfmux.xml:
+ * docs/plugins/inspect/plugin-assrender.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-fragmented.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-id3tag.xml:
+ * docs/plugins/inspect/plugin-inter.xml:
+ * docs/plugins/inspect/plugin-interlace.xml:
+ * docs/plugins/inspect/plugin-jpegformat.xml:
+ * docs/plugins/inspect/plugin-liveadder.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-mpegtsdemux.xml:
+ * docs/plugins/inspect/plugin-mpegtsmux.xml:
+ * docs/plugins/inspect/plugin-mpg123.xml:
+ * docs/plugins/inspect/plugin-mplex.xml:
+ * docs/plugins/inspect/plugin-ofa.xml:
+ * docs/plugins/inspect/plugin-openal.xml:
+ * docs/plugins/inspect/plugin-opencv.xml:
+ * docs/plugins/inspect/plugin-opus.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-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.4.3
+
+2014-09-24 11:44:54 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * po/af.po:
+ * po/az.po:
+ * po/bg.po:
+ * po/ca.po:
+ * po/cs.po:
+ * po/da.po:
+ * po/de.po:
+ * po/el.po:
+ * po/en_GB.po:
+ * po/eo.po:
+ * po/es.po:
+ * po/eu.po:
+ * po/fi.po:
+ * po/fr.po:
+ * po/gl.po:
+ * po/hr.po:
+ * po/hu.po:
+ * po/id.po:
+ * po/it.po:
+ * po/ja.po:
+ * po/ky.po:
+ * po/lt.po:
+ * po/lv.po:
+ * po/mt.po:
+ * po/nb.po:
+ * po/nl.po:
+ * po/or.po:
+ * po/pl.po:
+ * po/pt_BR.po:
+ * po/ro.po:
+ * po/ru.po:
+ * po/sk.po:
+ * po/sl.po:
+ * po/sq.po:
+ * po/sr.po:
+ * po/sv.po:
+ * po/tr.po:
+ * po/uk.po:
+ * po/vi.po:
+ * po/zh_CN.po:
+ Update .po files
2014-09-19 09:54:11 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com>
diff --git a/Makefile.in b/Makefile.in
index e89b803..7fb4b46 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -97,7 +97,7 @@
$(top_srcdir)/configure $(am__configure_deps) \
$(srcdir)/config.h.in $(srcdir)/gst-plugins-bad.spec.in \
ABOUT-NLS COPYING COPYING.LIB compile config.guess \
- config.rpath config.sub depcomp install-sh missing ltmain.sh
+ config.rpath config.sub install-sh missing ltmain.sh
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
diff --git a/NEWS b/NEWS
index e5094d7..ee09ad6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,2 @@
-This is GStreamer Bad Plugins 1.4.3
+This is GStreamer Bad Plugins 1.4.4
diff --git a/RELEASE b/RELEASE
index 2d82389..a210988 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,5 +1,5 @@
-Release notes for GStreamer Bad Plugins 1.4.3
+Release notes for GStreamer Bad Plugins 1.4.4
The GStreamer team is pleased to announce a bugfix release of the stable
1.4 release series. The 1.4 release series is adding new features on top
@@ -24,6 +24,7 @@
risky as a bugfix.
+
"That an accusation?"
@@ -72,7 +73,29 @@
Bugs fixed in this release
- * 736951 : vc1parse: initialize sent_codec_tag before using it
+ * 732239 : h264parse: expose parsed profiles to downstream
+ * 733510 : gltransformation produced black screen
+ * 734156 : androidmedia: doesn't calculate framesize for COLOR_FormatYUV420Planar correctly
+ * 736319 : dashdemux: mark first buffer as discont after restarting a download task
+ * 737186 : h264parse: Return flushing if we get chained while being set to READY
+ * 737569 : tsdemux: valid data is discarded if PES start packet is the first packet after discontinuity
+ * 737658 : fluiddec: segmentation fault when used with fakesrc
+ * 737724 : vc1parse: unref caps when it is empty in renegotiate()
+ * 738067 : gl: Downloading YUY2 is broken and creates blocky artefacts
+ * 738223 : fluiddec: leaks memory in gst_fluid_dec_change_state()
+ * 738230 : vc1parser: fix level value for simple/main profile
+ * 738243 : vc1parse: fix framesize when input is frame-layer
+ * 738291 : fluiddec: leaks incoming caps event
+ * 738449 : vc1parse: just assume none header-format when no codec_data is present
+ * 738519 : vc1parse: parse frame header when stream format is ASF/raw for simple/main profile
+ * 738532 : vc1parse: select caps according to wmv format at negotiation
+ * 738674 : rtmpsink: leaking URI string
+ * 738695 : mpegtsbase: do not remove programs on EOS
+ * 738696 : hlsdemux: send missing stream start
+ * 739277 : GstGLFilter propose allocation pass uninitialized size to gst_query_add_allocation_pool
+ * 739348 : configure.ac: auto decision to include GL library fails
+ * 739368 : gl: small memory leak in gl shader
+ * 739374 : h264parse: sets srccaps too often
==== Download ====
@@ -109,5 +132,23 @@
Contributors to this release
+ * Antonio Ospite
* Aurélien Zanelli
+ * Edward Hervey
+ * Havard Graff
+ * Jesper Larsen
+ * Julien Isorce
+ * Lubosz Sarnecki
+ * Luis de Bethencourt
+ * Matej Knopp
+ * Matthew Waters
+ * Matthieu Bouron
+ * Sebastian Dröge
+ * Sreerenj Balachandran
+ * Thiago Santos
+ * Thibault Saunier
+ * Tim-Philipp Müller
+ * Vincent Abriou
+ * Vivia Nikolaidou
+ * Vootele Vesterblom
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index c10e19b..cc915e4 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -103,10 +103,9 @@
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
diff --git a/config.h.in b/config.h.in
index 98e266b..47931d7 100644
--- a/config.h.in
+++ b/config.h.in
@@ -544,6 +544,9 @@
/* Define if building with VideoToolbox */
#undef HAVE_VIDEOTOOLBOX
+/* Define if building with VideoToolbox >= 10.9.6 */
+#undef HAVE_VIDEOTOOLBOX_10_9_6
+
/* Define to enable vo-aacenc library (used by vo-aacenc). */
#undef HAVE_VOAACENC
diff --git a/config.sub b/config.sub
index d654d03..bba4efb 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2014-05-01'
+timestamp='2014-09-11'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -302,6 +302,7 @@
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -828,6 +829,10 @@
basic_machine=powerpc-unknown
os=-morphos
;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -1373,7 +1378,7 @@
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
diff --git a/configure b/configure
index d9225c5..422ae0f 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.4.3.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.4.4.
#
# 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.4.3'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.4.3'
+PACKAGE_VERSION='1.4.4'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.4.4'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -2528,7 +2528,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.4.3 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.4.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2603,7 +2603,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.4.3:";;
+ short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.4.4:";;
esac
cat <<\_ACEOF
@@ -3217,7 +3217,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.4.3
+GStreamer Bad Plug-ins configure 1.4.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4190,7 +4190,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.4.3, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.4.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4858,8 +4858,8 @@
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
@@ -5172,7 +5172,7 @@
# Define the identity of the package.
PACKAGE='gst-plugins-bad'
- VERSION='1.4.3'
+ VERSION='1.4.4'
cat >>confdefs.h <<_ACEOF
@@ -5383,9 +5383,9 @@
- PACKAGE_VERSION_MAJOR=$(echo 1.4.3 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 1.4.3 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 1.4.3 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 1.4.4 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 1.4.4 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 1.4.4 | cut -d'.' -f3)
@@ -5396,7 +5396,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 1.4.3 | cut -d'.' -f4)
+ NANO=$(echo 1.4.4 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -10053,10 +10053,10 @@
done
- GST_CURRENT=403
+ GST_CURRENT=404
GST_REVISION=0
- GST_AGE=403
- GST_LIBVERSION=403:0:403
+ GST_AGE=404
+ GST_LIBVERSION=404:0:404
@@ -26670,12 +26670,12 @@
pkg_cv_GRAPHENE_CFLAGS="$GRAPHENE_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "graphene-1.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.0.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GRAPHENE_CFLAGS=`$PKG_CONFIG --cflags "graphene-1.0" 2>/dev/null`
+ pkg_cv_GRAPHENE_CFLAGS=`$PKG_CONFIG --cflags "graphene-1.0 >= 1.0.0" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -26688,12 +26688,12 @@
pkg_cv_GRAPHENE_LIBS="$GRAPHENE_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "graphene-1.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.0.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GRAPHENE_LIBS=`$PKG_CONFIG --libs "graphene-1.0" 2>/dev/null`
+ pkg_cv_GRAPHENE_LIBS=`$PKG_CONFIG --libs "graphene-1.0 >= 1.0.0" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -26712,9 +26712,9 @@
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphene-1.0"`
+ GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphene-1.0 >= 1.0.0"`
else
- GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphene-1.0"`
+ GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphene-1.0 >= 1.0.0"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GRAPHENE_PKG_ERRORS" >&5
@@ -31986,6 +31986,21 @@
+if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
+ old_LIBS=$LIBS
+ LIBS="$LIBS -framework VideoToolbox"
+ ac_fn_c_check_func "$LINENO" "VTCompressionSessionPrepareToEncodeFrames" "ac_cv_func_VTCompressionSessionPrepareToEncodeFrames"
+if test "x$ac_cv_func_VTCompressionSessionPrepareToEncodeFrames" = xyes; then :
+
+
+$as_echo "#define HAVE_VIDEOTOOLBOX_10_9_6 1" >>confdefs.h
+
+
+fi
+
+ LIBS=$old_LIBS
+fi
+
if test "x$HAVE_AVFOUNDATION" = "xyes"; then
HAVE_AVFOUNDATION_TRUE=
HAVE_AVFOUNDATION_FALSE='#'
@@ -32014,39 +32029,6 @@
fi
-if test "x$HAVE_IOS" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0" >&5
-$as_echo_n "checking Checking for __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0... " >&6; }
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <AvailabilityMacros.h>
-int
-main ()
-{
-
- #if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) || __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0
- #error "Need iOS >= 8.0 for VideoToolbox"
- #endif
-
- ;
- 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; }
- HAVE_VIDEOTOOLBOX="yes"
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- HAVE_VIDEOTOOLBOX="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
HAVE_VIDEOTOOLBOX_TRUE=
HAVE_VIDEOTOOLBOX_FALSE='#'
@@ -33931,6 +33913,10 @@
# if __APPLE__
# include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
+# include <OpenGL/gl3.h>
+# endif
# include <OpenGL/glu.h>
# else
# include <GL/gl.h>
@@ -33972,7 +33958,7 @@
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling Desktop GL support" >&5
$as_echo "$as_me: WARNING: Disabling Desktop GL support" >&2;}
- HAVE_OPENGL=no
+ HAVE_GL=no
else
{ $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;}
@@ -56339,7 +56325,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.4.3, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.4.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -56405,7 +56391,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.4.3
+GStreamer Bad Plug-ins config.status 1.4.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index e5216b5..96d2f52 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, cvs and prerelease does Werror too
-AC_INIT([GStreamer Bad Plug-ins],[1.4.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.4.4],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
AG_GST_INIT
@@ -48,7 +48,7 @@
dnl - interfaces added -> increment AGE
dnl - interfaces removed -> AGE = 0
dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 403, 0, 403)
+AS_LIBTOOL(GST, 404, 0, 404)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.4.0
@@ -286,7 +286,7 @@
dnl graphene-1.0 is optional and used in gltransformation
HAVE_GRAPHENE=NO
-PKG_CHECK_MODULES(GRAPHENE, graphene-1.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
+PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.0.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
if test "x$HAVE_GRAPHENE" = "xyes"; then
AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
fi
@@ -503,6 +503,16 @@
AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h, HAVE_VIDEOTOOLBOX="yes", HAVE_VIDEOTOOLBOX="no", [-])
+if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
+ old_LIBS=$LIBS
+ LIBS="$LIBS -framework VideoToolbox"
+ AC_CHECK_FUNC(VTCompressionSessionPrepareToEncodeFrames, [
+ AC_DEFINE(HAVE_VIDEOTOOLBOX_10_9_6, 1, [Define if building with VideoToolbox >= 10.9.6])
+ ], [
+ ])
+ LIBS=$old_LIBS
+fi
+
AM_CONDITIONAL(HAVE_AVFOUNDATION, test "x$HAVE_AVFOUNDATION" = "xyes")
if test "x$HAVE_AVFOUNDATION" = "xyes"; then
AC_DEFINE(HAVE_AVFOUNDATION, 1, [Define if building with AVFoundation])
@@ -513,20 +523,6 @@
AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
fi
-if test "x$HAVE_IOS" = "xyes"; then
- AC_MSG_CHECKING([Checking for __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0])
-
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <AvailabilityMacros.h>]], [[
- #if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) || __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0
- #error "Need iOS >= 8.0 for VideoToolbox"
- #endif
- ]])], [ AC_MSG_RESULT(yes)
- HAVE_VIDEOTOOLBOX="yes"
- ], [ AC_MSG_RESULT(no)
- HAVE_VIDEOTOOLBOX="no"
- ])
-fi
-
AM_CONDITIONAL(HAVE_VIDEOTOOLBOX, test "x$HAVE_VIDEOTOOLBOX" = "xyes")
if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
AC_DEFINE(HAVE_VIDEOTOOLBOX, 1, [Define if building with VideoToolbox])
@@ -861,6 +857,10 @@
# if __APPLE__
# include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
+# include <OpenGL/gl3.h>
+# endif
# include <OpenGL/glu.h>
# else
# include <GL/gl.h>
@@ -884,7 +884,7 @@
AC_MSG_ERROR([Cannot seem to include both GL and GLES2 headers. Try disabling one API])
fi
AC_MSG_WARN([Disabling Desktop GL support])
- HAVE_OPENGL=no
+ HAVE_GL=no
else
AC_MSG_WARN([Disabling GL|ES 2.0 support])
HAVE_GLES2=no
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index d07f6d6..632d9d6 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -831,6 +831,8 @@
gst_gl_context_get_gl_api
gst_gl_context_get_gl_context
gst_gl_context_get_gl_platform
+gst_gl_context_get_thread
+gst_gl_context_can_share
gst_gl_context_check_feature
gst_gl_context_check_gl_version
gst_gl_context_get_gl_version
diff --git a/docs/libs/html/GstGLColorConvert.html b/docs/libs/html/GstGLColorConvert.html
index 6c42b8d..7249954 100644
--- a/docs/libs/html/GstGLColorConvert.html
+++ b/docs/libs/html/GstGLColorConvert.html
@@ -116,6 +116,26 @@
<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="id-1.2.9.4.7.2.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<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="id-1.2.9.4.7.2.5"></a><h4>Returns</h4>
+<p> a new <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> object</p>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
diff --git a/docs/libs/html/GstGLContext.html b/docs/libs/html/GstGLContext.html
index 1d26f5c..ba85f88 100644
--- a/docs/libs/html/GstGLContext.html
+++ b/docs/libs/html/GstGLContext.html
@@ -166,6 +166,22 @@
</tr>
<tr>
<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Threads.html#GThread"><span class="returnvalue">GThread</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstGLContext.html#gst-gl-context-get-thread" title="gst_gl_context_get_thread ()">gst_gl_context_get_thread</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstGLContext.html#gst-gl-context-can-share" title="gst_gl_context_can_share ()">gst_gl_context_can_share</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
</td>
<td class="function_name">
@@ -296,6 +312,7 @@
<p> a new <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -346,6 +363,7 @@
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -394,6 +412,7 @@
<p> whether the context could successfully be created</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -432,6 +451,7 @@
<p> Whether the activation succeeded</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -479,6 +499,7 @@
<p> a function pointer or NULL</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -505,6 +526,7 @@
<p> the currently set window</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -545,6 +567,7 @@
<p> Whether the window was successfully updated</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -586,6 +609,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -613,6 +637,7 @@
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -639,9 +664,10 @@
</div>
<div class="refsect3">
<a name="id-1.2.9.5.7.15.7"></a><h4>Returns</h4>
-<p> the currently available OpenGL api</p>
+<p> the available OpenGL api</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -670,6 +696,7 @@
<p> The platform specific backing OpenGL context</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -698,6 +725,73 @@
<p> The platform specific backing OpenGL context</p>
<p></p>
</div>
+<p class="since">Since 1.4</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="https://developer.gnome.org/glib/unstable/glib-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="id-1.2.9.5.7.18.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<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="id-1.2.9.5.7.18.5"></a><h4>Returns</h4>
+<p> The <a href="https://developer.gnome.org/glib/unstable/glib-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.4.5</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-context-can-share"></a><h3>gst_gl_context_can_share ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-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>
+<div class="refsect3">
+<a name="id-1.2.9.5.7.19.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<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="id-1.2.9.5.7.19.5"></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>
+<p></p>
+</div>
+<p class="since">Since 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -708,7 +802,7 @@
<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="id-1.2.9.5.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.9.5.7.20.5"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -730,12 +824,13 @@
</table></div>
</div>
<div class="refsect3">
-<a name="id-1.2.9.5.7.18.6"></a><h4>Returns</h4>
+<a name="id-1.2.9.5.7.20.6"></a><h4>Returns</h4>
<p> Whether <em class="parameter"><code>feature</code></em>
is supported by <em class="parameter"><code>context</code></em>
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -746,7 +841,7 @@
<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> maj</code></em>,
<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> min</code></em>);</pre>
<div class="refsect3">
-<a name="id-1.2.9.5.7.19.4"></a><h4>Parameters</h4>
+<a name="id-1.2.9.5.7.21.4"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -778,11 +873,12 @@
</table></div>
</div>
<div class="refsect3">
-<a name="id-1.2.9.5.7.19.5"></a><h4>Returns</h4>
+<a name="id-1.2.9.5.7.21.5"></a><h4>Returns</h4>
<p> whether OpenGL context implements the required api and specified
version.</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -797,7 +893,7 @@
<em class="parameter"><code>context</code></em>
.</p>
<div class="refsect3">
-<a name="id-1.2.9.5.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.9.5.7.22.5"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -823,6 +919,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/GstGLDisplay.html b/docs/libs/html/GstGLDisplay.html
index 31b85c6..2793f0d 100644
--- a/docs/libs/html/GstGLDisplay.html
+++ b/docs/libs/html/GstGLDisplay.html
@@ -140,6 +140,7 @@
<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">
@@ -167,6 +168,7 @@
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -203,6 +205,7 @@
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -235,6 +238,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/GstGLWindow.html b/docs/libs/html/GstGLWindow.html
index d127e82..f7d5fa0 100644
--- a/docs/libs/html/GstGLWindow.html
+++ b/docs/libs/html/GstGLWindow.html
@@ -304,6 +304,7 @@
'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">
@@ -340,6 +341,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -376,6 +378,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -398,6 +401,7 @@
</tr></tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -420,6 +424,7 @@
</tr></tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -442,6 +447,7 @@
</tr></tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -469,6 +475,7 @@
. </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">
@@ -496,6 +503,7 @@
</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -536,6 +544,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -583,6 +592,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -627,6 +637,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -671,6 +682,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -715,6 +727,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -747,6 +760,7 @@
</tbody>
</table></div>
</div>
+<p class="since">Since 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -773,6 +787,7 @@
<p> the window handle we are currently rendering into</p>
<p></p>
</div>
+<p class="since">Since 1.4</p>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index a612e56..cc30082 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -144,7 +144,7 @@
<dd></dd>
<a name="idxC"></a><h3 class="title">C</h3>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode">GstCameraBinMode</a>, enum in gstcamerabin-enum
+GstCameraBinMode, enum in gstcamerabin-enum
</dt>
<dd></dd>
<dt>
@@ -571,6 +571,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="GstGLContext.html#gst-gl-context-can-share" title="gst_gl_context_can_share ()">gst_gl_context_can_share</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="GstGLContext.html#gst-gl-context-check-feature" title="gst_gl_context_check_feature ()">gst_gl_context_check_feature</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
</dt>
<dd></dd>
@@ -663,6 +667,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="GstGLContext.html#gst-gl-context-get-thread" title="gst_gl_context_get_thread ()">gst_gl_context_get_thread</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="GstGLContext.html#gst-gl-context-get-window" title="gst_gl_context_get_window ()">gst_gl_context_get_window</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
</dt>
<dd></dd>
@@ -2315,39 +2323,39 @@
<dd></dd>
<a name="idxP"></a><h3 class="title">P</h3>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html">GstPhotography</a>, struct in gstphotography
+GstPhotography, struct in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#GstPhotographyNoiseReduction">GstPhotographyNoiseReduction</a>, enum in gstphotography
+GstPhotographyNoiseReduction, enum in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#GST-PHOTOGRAPHY-AUTOFOCUS-DONE:CAPS">GST_PHOTOGRAPHY_AUTOFOCUS_DONE</a>, macro in gstphotography
+GST_PHOTOGRAPHY_AUTOFOCUS_DONE, macro in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-aperture">gst_photography_get_aperture</a>, function in gstphotography
+gst_photography_get_aperture, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-capabilities">gst_photography_get_capabilities</a>, function in gstphotography
+gst_photography_get_capabilities, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-config">gst_photography_get_config</a>, function in gstphotography
+gst_photography_get_config, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-ev-compensation">gst_photography_get_ev_compensation</a>, function in gstphotography
+gst_photography_get_ev_compensation, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-exposure">gst_photography_get_exposure</a>, function in gstphotography
+gst_photography_get_exposure, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-flash-mode">gst_photography_get_flash_mode</a>, function in gstphotography
+gst_photography_get_flash_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
@@ -2359,23 +2367,23 @@
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-iso-speed">gst_photography_get_iso_speed</a>, function in gstphotography
+gst_photography_get_iso_speed, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-noise-reduction">gst_photography_get_noise_reduction</a>, function in gstphotography
+gst_photography_get_noise_reduction, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-scene-mode">gst_photography_get_scene_mode</a>, function in gstphotography
+gst_photography_get_scene_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-white-balance-mode">gst_photography_get_white_balance_mode</a>, function in gstphotography
+gst_photography_get_white_balance_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-get-zoom">gst_photography_get_zoom</a>, function in gstphotography
+gst_photography_get_zoom, function in gstphotography
</dt>
<dd></dd>
<dt>
@@ -2383,7 +2391,7 @@
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-prepare-for-capture">gst_photography_prepare_for_capture</a>, function in gstphotography
+gst_photography_prepare_for_capture, function in gstphotography
</dt>
<dd></dd>
<dt>
@@ -2447,27 +2455,27 @@
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-aperture">gst_photography_set_aperture</a>, function in gstphotography
+gst_photography_set_aperture, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-autofocus">gst_photography_set_autofocus</a>, function in gstphotography
+gst_photography_set_autofocus, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-config">gst_photography_set_config</a>, function in gstphotography
+gst_photography_set_config, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-ev-compensation">gst_photography_set_ev_compensation</a>, function in gstphotography
+gst_photography_set_ev_compensation, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-exposure">gst_photography_set_exposure</a>, function in gstphotography
+gst_photography_set_exposure, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-flash-mode">gst_photography_set_flash_mode</a>, function in gstphotography
+gst_photography_set_flash_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
@@ -2479,27 +2487,27 @@
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-iso-speed">gst_photography_set_iso_speed</a>, function in gstphotography
+gst_photography_set_iso_speed, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-noise-reduction">gst_photography_set_noise_reduction</a>, function in gstphotography
+gst_photography_set_noise_reduction, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-scene-mode">gst_photography_set_scene_mode</a>, function in gstphotography
+gst_photography_set_scene_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-white-balance-mode">gst_photography_set_white_balance_mode</a>, function in gstphotography
+gst_photography_set_white_balance_mode, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#gst-photography-set-zoom">gst_photography_set_zoom</a>, function in gstphotography
+gst_photography_set_zoom, function in gstphotography
</dt>
<dd></dd>
<dt>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK:CAPS">GST_PHOTOGRAPHY_SHAKE_RISK</a>, macro in gstphotography
+GST_PHOTOGRAPHY_SHAKE_RISK, macro in gstphotography
</dt>
<dd></dd>
<dt>
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 40f2bc8..628a54c 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -418,22 +418,24 @@
<keyword type="macro" name="GST_GL_CONTEXT_ERROR" link="GstGLContext.html#GST-GL-CONTEXT-ERROR:CAPS"/>
<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"/>
- <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_activate ()" link="GstGLContext.html#gst-gl-context-activate"/>
+ <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_activate ()" link="GstGLContext.html#gst-gl-context-activate" since="1.4"/>
<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"/>
- <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_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_get_proc_address ()" link="GstGLContext.html#gst-gl-context-get-proc-address" since="1.4"/>
+ <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_thread ()" link="GstGLContext.html#gst-gl-context-get-thread" since="1.4.5"/>
+ <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_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="enum" name="enum GstGLContextError" link="GstGLContext.html#GstGLContextError"/>
<keyword type="struct" name="GstGLContext" link="GstGLContext.html#GstGLContext-struct"/>
<keyword type="function" name="gst_gl_context_cocoa_new ()" link="gst-plugins-bad-libs-GstGLContextCocoa.html#gst-gl-context-cocoa-new"/>
@@ -444,10 +446,10 @@
<keyword type="struct" name="struct GstGLContextGLX" link="gst-plugins-bad-libs-GstGLContextGLX.html#GstGLContextGLX"/>
<keyword type="function" name="gst_gl_context_wgl_new ()" link="gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-new"/>
<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"/>
- <keyword type="function" name="gst_gl_display_get_handle_type ()" link="GstGLDisplay.html#gst-gl-display-get-handle-type"/>
- <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="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_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="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"/>
@@ -590,21 +592,21 @@
<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"/>
- <keyword type="function" name="gst_gl_window_draw ()" link="GstGLWindow.html#gst-gl-window-draw"/>
- <keyword type="function" name="gst_gl_window_draw_unlocked ()" link="GstGLWindow.html#gst-gl-window-draw-unlocked"/>
- <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_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_draw_unlocked ()" link="GstGLWindow.html#gst-gl-window-draw-unlocked" 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="enum" name="enum GstGLWindowError" link="GstGLWindow.html#GstGLWindowError"/>
<keyword type="struct" name="GstGLWindow" link="GstGLWindow.html#GstGLWindow-struct"/>
<keyword type="struct" name="GstGLWindowClass" link="GstGLWindow.html#GstGLWindowClass"/>
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
index 1589564..e1b61e6 100644
--- 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
@@ -549,7 +549,7 @@
gst_mpegts_section_from_pat (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *programs</code></em>,
<em class="parameter"><code><span class="type">guint16</span> 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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram"><span class="type">GstMpegtsPatPrograms</span></a></p>
+ array of <a href="../gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram"><span class="type">GstMpegtsPatPrograms</span></a></p>
<div class="refsect3">
<a name="id-1.2.5.4.9.14.5"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
index 81ff32e..9df5eb6 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
@@ -390,7 +390,7 @@
<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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad"><span class="type">GstAggregatorPads</span></a>. If the subclass returns
+buffers from the <a href="../gst-plugins-bad-libs-1.0/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>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
index 62ff5ef..dea1162 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
@@ -91,7 +91,8 @@
<div class="refsect2">
<a name="gst-gl-window-cocoa-create-window"></a><h3>gst_gl_window_cocoa_create_window ()</h3>
<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_gl_window_cocoa_create_window (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLWindowCocoa.html#GstGLWindowCocoa" title="struct GstGLWindowCocoa"><span class="type">GstGLWindowCocoa</span></a> *window_cocoa</code></em>);</pre>
+gst_gl_window_cocoa_create_window (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLWindowCocoa.html#GstGLWindowCocoa" title="struct GstGLWindowCocoa"><span class="type">GstGLWindowCocoa</span></a> *window_cocoa</code></em>,
+ <em class="parameter"><code><span class="type">NSRect</span> rect</code></em>);</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 40de875..f529fca 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.4.3)
+ for GStreamer Bad Library 1.0 (1.4.4)
<a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/</a>.
</p></div>
</div>
diff --git a/docs/libs/html/index.sgml b/docs/libs/html/index.sgml
index 4121f08..5378adc 100644
--- a/docs/libs/html/index.sgml
+++ b/docs/libs/html/index.sgml
@@ -520,6 +520,8 @@
<ANCHOR id="gst-gl-context-get-gl-api" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-get-gl-api">
<ANCHOR id="gst-gl-context-get-gl-context" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-get-gl-context">
<ANCHOR id="gst-gl-context-get-gl-platform" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-get-gl-platform">
+<ANCHOR id="gst-gl-context-get-thread" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-get-thread">
+<ANCHOR id="gst-gl-context-can-share" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-can-share">
<ANCHOR id="gst-gl-context-check-feature" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-check-feature">
<ANCHOR id="gst-gl-context-check-gl-version" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-check-gl-version">
<ANCHOR id="gst-gl-context-get-gl-version" href="gst-plugins-bad-libs-1.0/GstGLContext.html#gst-gl-context-get-gl-version">
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index 6ae2f26..2df71bd 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -3,7 +3,6 @@
GstObject
GstAllocator
GstAllocatorSysmem
- GstVdpVideoAllocator
GstAudioRingBuffer
GstAudioSinkRingBuffer
GstAudioSrcRingBuffer
@@ -35,7 +34,6 @@
GstSirenDec
GstAudioEncoder
ADPCMEnc
- GstFaac
GstGSMEnc
GstOpusEnc
GstSbcEnc
@@ -75,6 +73,7 @@
GstInterAudioSink
GstInterSubSink
GstInterVideoSink
+ GstRTMPSink
GstShmSink
GstVideoSink
GstDfbVideoSink
@@ -97,6 +96,7 @@
GstDvbSrc
GstGLTestSrc
GstMMS
+ GstRTMPSrc
GstRfbSrc
GstShmSrc
GstBaseTransform
@@ -277,8 +277,6 @@
GstRsvgDec
GstSchroDec
GstVMncDec
- GstVdpDecoder
- GstVdpMpegDec
GstWebPDec
GstVideoEncoder
GstOpenJPEGEnc
@@ -309,7 +307,6 @@
GstTaskPool
GstColorBalanceChannel
GstEncodingProfile
- GstVdpDevice
MXFMetadataBase
MXFDescriptiveMetadata
MXFDMS1
diff --git a/docs/plugins/html/GstPhotography.html b/docs/plugins/html/GstPhotography.html
index 9d6e47a..d023224 100644
--- a/docs/plugins/html/GstPhotography.html
+++ b/docs/plugins/html/GstPhotography.html
@@ -272,7 +272,7 @@
<td class="property_flags">Read</td>
</tr>
<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#GstColourToneMode"><span class="type">GstColourToneMode</span></a></td>
+<td class="property_type"><span class="type">GstColourToneMode</span></td>
<td class="property_name"><a class="link" href="GstPhotography.html#GstPhotography--colour-tone-mode" title="The “colour-tone-mode” property">colour-tone-mode</a></td>
<td class="property_flags">Read / Write</td>
</tr>
@@ -455,7 +455,7 @@
<a name="GstPhotography.prerequisites"></a><h2>Prerequisites</h2>
<p>
GstPhotography requires
- <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>.</p>
+ GstImplementsInterface and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>.</p>
</div>
<div class="refsect1">
<a name="GstPhotography.description"></a><h2>Description</h2>
@@ -1467,7 +1467,7 @@
<hr>
<div class="refsect2">
<a name="GstPhotography--colour-tone-mode"></a><h3>The <code class="literal">“colour-tone-mode”</code> property</h3>
-<pre class="programlisting"> “colour-tone-mode” <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/GstPhotography.html#GstColourToneMode"><span class="type">GstColourToneMode</span></a></pre>
+<pre class="programlisting"> “colour-tone-mode” <span class="type">GstColourToneMode</span></pre>
<p>Colour tone setting changes colour shading in the photo.</p>
<p>Flags: Read / Write</p>
<p>Default value: GST_PHOTOGRAPHY_COLOUR_TONE_MODE_NORMAL</p>
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 9eb48b5..60c2f58 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
@@ -286,9 +286,9 @@
<keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-edgedetect.html#id-1.2.27.3.2.2"/>
<keyword type="" name="Element Information" link="gst-plugins-bad-plugins-eglglessink.html#id-1.2.28.3.2.1"/>
<keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-eglglessink.html#id-1.2.28.3.2.2"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faac.html#id-1.2.29.8.2.1"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faac.html#id-1.2.29.8.2.2"/>
- <keyword type="struct" name="struct GstFaac" link="gst-plugins-bad-plugins-faac.html#GstFaac-struct"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faac.html#id-1.2.29.6.2.1"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faac.html#id-1.2.29.6.2.2"/>
+ <keyword type="struct" name="struct GstFaac" link="gst-plugins-bad-plugins-faac.html#GstFaac"/>
<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"/>
<keyword type="property" name="The “outputformat” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--outputformat"/>
@@ -493,13 +493,13 @@
<keyword type="property" name="The “use-copyrect” property" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--use-copyrect"/>
<keyword type="property" name="The “shared” property" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--shared"/>
<keyword type="property" name="The “view-only” property" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--view-only"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsink.html#id-1.2.56.6.2.1"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsink.html#id-1.2.56.6.2.2"/>
- <keyword type="struct" name="struct GstRTMPSink" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsink.html#id-1.2.56.8.2.1"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsink.html#id-1.2.56.8.2.2"/>
+ <keyword type="struct" name="struct GstRTMPSink" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink-struct"/>
<keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink--location"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsrc.html#id-1.2.57.6.2.1"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsrc.html#id-1.2.57.6.2.2"/>
- <keyword type="struct" name="struct GstRTMPSrc" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsrc.html#id-1.2.57.8.2.1"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsrc.html#id-1.2.57.8.2.2"/>
+ <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="" name="Element Information" link="gst-plugins-bad-plugins-shmsink.html#id-1.2.58.8.2.1"/>
<keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-shmsink.html#id-1.2.58.8.2.2"/>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
index 46d76aa..59cae03 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
@@ -54,12 +54,12 @@
<span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
<span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
<span class="lineart">├──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
- <span class="lineart">│</span> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
- <span class="lineart">│</span> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+ <span class="lineart">│</span> <span class="lineart">╰──</span> GstAggregator
+ <span class="lineart">│</span> <span class="lineart">╰──</span> GstVideoAggregator
<span class="lineart">│</span> <span class="lineart">╰──</span> GstCompositor
<span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html">GstPad</a>
- <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad">GstAggregatorPad</a>
- <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad">GstVideoAggregatorPad</a>
+ <span class="lineart">╰──</span> GstAggregatorPad
+ <span class="lineart">╰──</span> GstVideoAggregatorPad
<span class="lineart">╰──</span> GstCompositorPad
</pre>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
index 7106a4c..4d0098e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
@@ -15,8 +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-faac.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-faac.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-faac.description" class="shortcut">Description</a></span><span id="nav_interfaces"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-faac.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-faac.properties" class="shortcut">Properties</a></span>
</td>
@@ -86,7 +85,7 @@
</tbody>
</table></div>
</div>
-<a name="GstFaac"></a><div class="refsect1">
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-faac.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
@@ -95,21 +94,11 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-faac.html#GstFaac-struct" title="struct GstFaac">GstFaac</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-faac.html#GstFaac" title="struct GstFaac">GstFaac</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-plugins-faac.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
- <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
- <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
- <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder">GstAudioEncoder</a>
- <span class="lineart">╰──</span> GstFaac
-</pre>
-</div>
-<div class="refsect1">
<a name="gst-plugins-bad-plugins-faac.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GstFaac implements
@@ -120,7 +109,7 @@
<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.6.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -146,7 +135,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.6.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -210,8 +199,33 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-faac.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstFaac-struct"></a><h3>struct GstFaac</h3>
-<pre class="programlisting">struct GstFaac;</pre>
+<a name="GstFaac"></a><h3>struct GstFaac</h3>
+<pre class="programlisting">struct GstFaac {
+ GstAudioEncoder element;
+
+ /* input format */
+ gint format;
+ /* input frame size */
+ gint samples;
+ /* required output buffer size */
+ gint bytes;
+
+ /* negotiated */
+ gint mpegversion, outputformat;
+
+ /* properties */
+ gint bitrate,
+ profile,
+ quality,
+ brtype,
+ shortctl;
+ gboolean tns,
+ midside;
+
+ /* FAAC object */
+ faacEncHandle handle;
+};
+</pre>
<p>
</p>
</div>
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 400f8f5..b8104a1 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.4.3</td>
+<td>1.4.4</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 f9c6ed5..b04ed1c 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.4.3</td>
+<td>1.4.4</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 9fdccd3..e5510f8 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.4.3</td>
+<td>1.4.4</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 590bcb3..64cc3f5 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.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
index 95549d9..c03c708 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.4.3</td>
+<td>1.4.4</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 b12c68e..df09548 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.4.3</td>
+<td>1.4.4</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 e3e378f..d122ce9 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.4.3</td>
+<td>1.4.4</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 b7136e3..47deac1 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.4.3</td>
+<td>1.4.4</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 4e3e2af..fde4049 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.4.3</td>
+<td>1.4.4</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 ec722c7..f331d7c 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.4.3</td>
+<td>1.4.4</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 d8103eb..320b451 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.4.3</td>
+<td>1.4.4</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 d965e97..3e1efad 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.4.3</td>
+<td>1.4.4</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 1089385..ad75ea8 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.4.3</td>
+<td>1.4.4</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 98e43b1..b45f112 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.4.3</td>
+<td>1.4.4</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 79f7191..59a4ede 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.4.3</td>
+<td>1.4.4</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 3a8cd32..36f2ddd 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.4.3</td>
+<td>1.4.4</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 e782fb0..5cedd12 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.4.3</td>
+<td>1.4.4</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 4cbd345..addb246 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.4.3</td>
+<td>1.4.4</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 0995e5c..ea9c452 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.4.3</td>
+<td>1.4.4</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-liveadder.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
index 943a4e7..8df95a3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.4.3</td>
+<td>1.4.4</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 c14aab8..42e2af5 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.4.3</td>
+<td>1.4.4</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 891bf64..fdd0829 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.4.3</td>
+<td>1.4.4</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 90dc2b8..d58b06c 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.4.3</td>
+<td>1.4.4</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 33cbaf5..5469d5c 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.4.3</td>
+<td>1.4.4</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 82cc540..0f1de15 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.4.3</td>
+<td>1.4.4</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 595c4ae..a58c1e7 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.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
index 315a1a7..64e067b 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.4.3</td>
+<td>1.4.4</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 4f5419c..968f4a0 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.4.3</td>
+<td>1.4.4</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 7b6f14e..ac0bffd 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.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index aa25338..5208f55 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.4.3</td>
+<td>1.4.4</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 ae99144..78b06b9 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.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index bb1545b..c45802b 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.4.3</td>
+<td>1.4.4</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 75708dd..385894d 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.3.0.1</td>
+<td>1.4.4</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-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index 6989ecc..03d7bce 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.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index 60faa3e..f21d274 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.4.3</td>
+<td>1.4.4</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 fdcfb95..0edc409 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.4.3</td>
+<td>1.4.4</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 59dbe48..8066768 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.4.3</td>
+<td>1.4.4</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 38261a2..e479793 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.4.3</td>
+<td>1.4.4</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 e0cde11..dce5593 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index c37f3a7..12ea014 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.4.3</td>
+<td>1.4.4</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
index 1b19795..664db8a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.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-rtmpsink.description" class="shortcut">Description</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-rtmpsink.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-rtmpsink.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-rtmpsink.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-rtmpsink.properties" class="shortcut">Properties</a></span>
</td>
@@ -49,7 +50,7 @@
</tr></tbody>
</table></div>
</div>
-<div class="refsect1">
+<a name="GstRTMPSink"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsink.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
@@ -58,11 +59,21 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink" title="struct GstRTMPSink">GstRTMPSink</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink-struct" title="struct GstRTMPSink">GstRTMPSink</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rtmpsink.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+ <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSink.html">GstBaseSink</a>
+ <span class="lineart">╰──</span> GstRTMPSink
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsink.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GstRTMPSink implements
@@ -73,7 +84,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.56.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.56.8.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -99,7 +110,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.56.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.56.8.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -135,11 +146,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsink.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstRTMPSink"></a><h3>struct GstRTMPSink</h3>
-<pre class="programlisting">struct GstRTMPSink {
- GstBaseSink parent;
-};
-</pre>
+<a name="GstRTMPSink-struct"></a><h3>struct GstRTMPSink</h3>
+<pre class="programlisting">struct GstRTMPSink;</pre>
<p>
</p>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
index 251433a..51a37a7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.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-rtmpsrc.description" class="shortcut">Description</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-rtmpsrc.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-rtmpsrc.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-rtmpsrc.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-rtmpsrc.properties" class="shortcut">Properties</a></span>
</td>
@@ -49,7 +50,7 @@
</tr></tbody>
</table></div>
</div>
-<div class="refsect1">
+<a name="GstRTMPSrc"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsrc.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
@@ -58,11 +59,22 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc" title="struct GstRTMPSrc">GstRTMPSrc</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc-struct" title="struct GstRTMPSrc">GstRTMPSrc</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rtmpsrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+ <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a>
+ <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstPushSrc.html">GstPushSrc</a>
+ <span class="lineart">╰──</span> GstRTMPSrc
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GstRTMPSrc implements
@@ -73,7 +85,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.57.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.57.8.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -99,7 +111,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.57.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.57.8.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -135,11 +147,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsrc.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstRTMPSrc"></a><h3>struct GstRTMPSrc</h3>
-<pre class="programlisting">struct GstRTMPSrc {
- GstPushSrc parent;
-};
-</pre>
+<a name="GstRTMPSrc-struct"></a><h3>struct GstRTMPSrc</h3>
+<pre class="programlisting">struct GstRTMPSrc;</pre>
<p>
</p>
</div>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 704b2d2..236f396 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.4.3)
+ for GStreamer Bad Plugins 1.0 (1.4.4)
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/</a>.
</p></div>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index b16f487..97c5d29 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -314,14 +314,12 @@
<ANCHOR id="gst-plugins-bad-plugins-eglglessink.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-eglglessink.html#gst-plugins-bad-plugins-eglglessink.other_details">
<ANCHOR id="gst-plugins-bad-plugins-faac" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html">
<ANCHOR id="gst-plugins-bad-plugins-faac.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.properties">
-<ANCHOR id="GstFaac" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#GstFaac">
<ANCHOR id="gst-plugins-bad-plugins-faac.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.other">
-<ANCHOR id="gst-plugins-bad-plugins-faac.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.object-hierarchy">
<ANCHOR id="gst-plugins-bad-plugins-faac.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.implemented-interfaces">
<ANCHOR id="gst-plugins-bad-plugins-faac.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.description">
<ANCHOR id="gst-plugins-bad-plugins-faac.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.functions_details">
<ANCHOR id="gst-plugins-bad-plugins-faac.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.other_details">
-<ANCHOR id="GstFaac-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#GstFaac-struct">
+<ANCHOR id="GstFaac" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#GstFaac">
<ANCHOR id="gst-plugins-bad-plugins-faac.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#gst-plugins-bad-plugins-faac.property-details">
<ANCHOR id="GstFaac--bitrate" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#GstFaac--bitrate">
<ANCHOR id="GstFaac--midside" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-faac.html#GstFaac--midside">
@@ -675,22 +673,26 @@
<ANCHOR id="GstRfbSrc--view-only" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--view-only">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.properties">
+<ANCHOR id="GstRTMPSink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.other">
+<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.object-hierarchy">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.implemented-interfaces">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.description">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.functions_details">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.other_details">
-<ANCHOR id="GstRTMPSink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink">
+<ANCHOR id="GstRTMPSink-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink-struct">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsink.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#gst-plugins-bad-plugins-rtmpsink.property-details">
<ANCHOR id="GstRTMPSink--location" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink--location">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.properties">
+<ANCHOR id="GstRTMPSrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.other">
+<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.object-hierarchy">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.implemented-interfaces">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.description">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.functions_details">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.other_details">
-<ANCHOR id="GstRTMPSrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc">
+<ANCHOR id="GstRTMPSrc-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc-struct">
<ANCHOR id="gst-plugins-bad-plugins-rtmpsrc.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#gst-plugins-bad-plugins-rtmpsrc.property-details">
<ANCHOR id="GstRTMPSrc--location" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location">
<ANCHOR id="gst-plugins-bad-plugins-shmsink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-shmsink.html">
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index 3e29c55..79edfbb 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.4.3</version>
+ <version>1.4.4</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 6a8b578..ae261b6 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.4.3</version>
+ <version>1.4.4</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 ea441de..bcb236f 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.4.3</version>
+ <version>1.4.4</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 3c9f035..671d8d2 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index 004952f..382ed63 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.4.3</version>
+ <version>1.4.4</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 7e65bfe..c08edd7 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index 784441d..08ef55c 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.4.3</version>
+ <version>1.4.4</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 76c4509..dff8800 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.4.3</version>
+ <version>1.4.4</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 715ed75..7cf47ef 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.4.3</version>
+ <version>1.4.4</version>
<license>GPL</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 3ce0293..91a61a0 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.4.3</version>
+ <version>1.4.4</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 dae5d90..fb2539d 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index 8208752..ed123fd 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.4.3</version>
+ <version>1.4.4</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 7aab0d8..86c1452 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.4.3</version>
+ <version>1.4.4</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 5f078c5..4dd2268 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.4.3</version>
+ <version>1.4.4</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 d43eb5a..6ca39af 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.4.3</version>
+ <version>1.4.4</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 0401f6f..88ceb68 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.4.3</version>
+ <version>1.4.4</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 673d61f..ca5bde4 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.4.3</version>
+ <version>1.4.4</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 c376d19..2958ba8 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.4.3</version>
+ <version>1.4.4</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 1577526..4087190 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index 31d9a5d..ead33c2 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.4.3</version>
+ <version>1.4.4</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 b419d46..c09852e 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index e3892ee..d19b743 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</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 4279a0c..4896e05 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.4.3</version>
+ <version>1.4.4</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 43fd022..ce2433b 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.4.3</version>
+ <version>1.4.4</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 79d8faf..fb8c5dd 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index f5f04dc..e2a32de 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.4.3</version>
+ <version>1.4.4</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 8925ec0..5886ea4 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.4.3</version>
+ <version>1.4.4</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 ae2075e..cc7f383 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.4.3</version>
+ <version>1.4.4</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 c4082cc..511bec5 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.4.3</version>
+ <version>1.4.4</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 3b9b88a..5b3574c 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.4.3</version>
+ <version>1.4.4</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 6f16224..4acb079 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.4.3</version>
+ <version>1.4.4</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 0e674c1..567e630 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fragmented.xml b/docs/plugins/inspect/plugin-fragmented.xml
index 336c83b..a312ae1 100644
--- a/docs/plugins/inspect/plugin-fragmented.xml
+++ b/docs/plugins/inspect/plugin-fragmented.xml
@@ -3,7 +3,7 @@
<description>Fragmented streaming plugins</description>
<filename>../../ext/hls/.libs/libgstfragmented.so</filename>
<basename>libgstfragmented.so</basename>
- <version>1.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-freeverb.xml b/docs/plugins/inspect/plugin-freeverb.xml
index 6377b8f..97e820b 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.4.3</version>
+ <version>1.4.4</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 33b58b4..b512d90 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.4.3</version>
+ <version>1.4.4</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 5cb194b..f908189 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.4.3</version>
+ <version>1.4.4</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 40162fe..e044522 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.4.3</version>
+ <version>1.4.4</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 b174613..843c8f4 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.4.3</version>
+ <version>1.4.4</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 f235c6f..de69473 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.4.3</version>
+ <version>1.4.4</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 4e14f43..e84b041 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.4.3</version>
+ <version>1.4.4</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 c6026bd..46d3127 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-id3tag.xml b/docs/plugins/inspect/plugin-id3tag.xml
index bdc7284..58df0e7 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.4.3</version>
+ <version>1.4.4</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 34c2279..2ac96a6 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index 4fd0c4e..215e559 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index 3957353..3f35569 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.4.3</version>
+ <version>1.4.4</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 eaf514f..9dfc344 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.4.3</version>
+ <version>1.4.4</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 bf0b16a..b3fd766 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.4.3</version>
+ <version>1.4.4</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 a0d574a..5b61a47 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.4.3</version>
+ <version>1.4.4</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 16ecc3b..adf5659 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index f7e4fb5..2d923d9 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-liveadder.xml b/docs/plugins/inspect/plugin-liveadder.xml
index 1cd4924..64a5da9 100644
--- a/docs/plugins/inspect/plugin-liveadder.xml
+++ b/docs/plugins/inspect/plugin-liveadder.xml
@@ -3,7 +3,7 @@
<description>Adds multiple live discontinuous streams</description>
<filename>../../gst/liveadder/.libs/libgstliveadder.so</filename>
<basename>libgstliveadder.so</basename>
- <version>1.4.3</version>
+ <version>1.4.4</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 05ce93c..6b5123f 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.4.3</version>
+ <version>1.4.4</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 a07b40f..6cb03bb 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.4.3</version>
+ <version>1.4.4</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 7fb2445..dafdd10 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.4.3</version>
+ <version>1.4.4</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 2015c03..0b84bfa 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.4.3</version>
+ <version>1.4.4</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 edac8ce..51fd071 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.4.3</version>
+ <version>1.4.4</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 fca3243..e88c13a 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.4.3</version>
+ <version>1.4.4</version>
<license>unknown</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index c050c95..d28b270 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.4.3</version>
+ <version>1.4.4</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 0392520..82d3f89 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index e98c0d1..9904444 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpg123.xml b/docs/plugins/inspect/plugin-mpg123.xml
index 24b3b2d..04515ce 100644
--- a/docs/plugins/inspect/plugin-mpg123.xml
+++ b/docs/plugins/inspect/plugin-mpg123.xml
@@ -3,7 +3,7 @@
<description>mp3 decoding based on the mpg123 library</description>
<filename>../../ext/mpg123/.libs/libgstmpg123.so</filename>
<basename>libgstmpg123.so</basename>
- <version>1.4.3</version>
+ <version>1.4.4</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 733e810..9634309 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.4.3</version>
+ <version>1.4.4</version>
<license>GPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index db07bbc..3c5790e 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.4.3</version>
+ <version>1.4.4</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 c47557f..ff985d6 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.4.3</version>
+ <version>1.4.4</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 e857596..233a22a 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.4.3</version>
+ <version>1.4.4</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 f0e7f86..927fe9a 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index bb8c4b4..4874992 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.4.3</version>
+ <version>1.4.4</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 c1bc8bb..08696cb 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openjpeg.xml b/docs/plugins/inspect/plugin-openjpeg.xml
index c5eca6b..78ba51f 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opus.xml b/docs/plugins/inspect/plugin-opus.xml
index 4abd8d9..3902399 100644
--- a/docs/plugins/inspect/plugin-opus.xml
+++ b/docs/plugins/inspect/plugin-opus.xml
@@ -3,7 +3,7 @@
<description>OPUS plugin library</description>
<filename>../../ext/opus/.libs/libgstopus.so</filename>
<basename>libgstopus.so</basename>
- <version>1.4.3</version>
+ <version>1.4.4</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 bf851aa..3dda8d0 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.4.3</version>
+ <version>1.4.4</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 fbe46d8..8205c01 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.4.3</version>
+ <version>1.4.4</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 3eb81b2..79a7d45 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index c507ede..6407308 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.4.3</version>
+ <version>1.4.4</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 f615998..1f5be42 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.4.3</version>
+ <version>1.4.4</version>
<license>GPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index e78c515..03df258 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.4.3</version>
+ <version>1.4.4</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 457a8ec..3d0c40e 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.4.3</version>
+ <version>1.4.4</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 092474f..e4b15b8 100644
--- a/docs/plugins/inspect/plugin-rtmp.xml
+++ b/docs/plugins/inspect/plugin-rtmp.xml
@@ -3,10 +3,10 @@
<description>RTMP source and sink</description>
<filename>../../ext/rtmp/.libs/libgstrtmp.so</filename>
<basename>libgstrtmp.so</basename>
- <version>1.3.0.1</version>
+ <version>1.4.4</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>
diff --git a/docs/plugins/inspect/plugin-sbc.xml b/docs/plugins/inspect/plugin-sbc.xml
index 5e76839..8430ad8 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.4.3</version>
+ <version>1.4.4</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 e58ed9c..090bc8d 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.4.3</version>
+ <version>1.4.4</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 038d730..93f0a46 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index df81603..122464c 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.4.3</version>
+ <version>1.4.4</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 5f49608..db4cd79 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.4.3</version>
+ <version>1.4.4</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 1c0b5d2..847ac2a 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.4.3</version>
+ <version>1.4.4</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 473009f..c00e1f1 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.4.3</version>
+ <version>1.4.4</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 f6c3961..7ec539b 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.4.3</version>
+ <version>1.4.4</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 aa8b169..65bff8d 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.4.3</version>
+ <version>1.4.4</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 e5cb0f2..adf1292 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.4.3</version>
+ <version>1.4.4</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 4a7af61..9e5a482 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.4.3</version>
+ <version>1.4.4</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 7a4a911..7676502 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.4.3</version>
+ <version>1.4.4</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 b563cae..804ea57 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.4.3</version>
+ <version>1.4.4</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 4a200fe..b2511bd 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index 4f489db..7122033 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.4.3</version>
+ <version>1.4.4</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
deleted file mode 100644
index cc2b450..0000000
--- a/docs/plugins/inspect/plugin-vdpau.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<plugin>
- <name>vdpau</name>
- <description>Various elements utilizing VDPAU</description>
- <filename>../../sys/vdpau/.libs/libgstvdpau.so</filename>
- <basename>libgstvdpau.so</basename>
- <version>1.4.3</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 b4cf697..f12cde2 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-videoparsersbad.xml b/docs/plugins/inspect/plugin-videoparsersbad.xml
index 10af021..4fa94d0 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index f83966b..7911025 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.4.3</version>
+ <version>1.4.4</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 e886adb..debed84 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.4.3</version>
+ <version>1.4.4</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 f946466..db0f33e 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.4.3</version>
+ <version>1.4.4</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 ab53de3..24953e3 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.4.3</version>
+ <version>1.4.4</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 13291ca..96ed4f7 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.4.3</version>
+ <version>1.4.4</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 c49490d..970ddda 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index cde3a2f..c99a3da 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.4.3</version>
+ <version>1.4.4</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 d411e93..f5a9f0c 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.4.3</version>
+ <version>1.4.4</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 50437c6..b179b57 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.4.3</version>
+ <version>1.4.4</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 96e37fd..d376d7c 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.4.3</version>
+ <version>1.4.4</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/ext/curl/gstcurlsmtpsink.c b/ext/curl/gstcurlsmtpsink.c
index 4409ceb..c28213b 100644
--- a/ext/curl/gstcurlsmtpsink.c
+++ b/ext/curl/gstcurlsmtpsink.c
@@ -725,6 +725,13 @@
return FALSE;
}
+ res = curl_easy_setopt (bcsink->curl, CURLOPT_UPLOAD, 1L);
+ if (res != CURLE_OK) {
+ bcsink->error = g_strdup_printf ("failed to prepare for upload: %s",
+ curl_easy_strerror (res));
+ return FALSE;
+ }
+
parent_class = GST_CURL_TLS_SINK_GET_CLASS (sink);
if (sink->use_ssl) {
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index cb63c67..3f5c17c 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -605,6 +605,7 @@
stream->last_ret = GST_FLOW_OK;
stream->restart_download = TRUE;
stream->need_header = TRUE;
+ stream->discont = TRUE;
GST_DEBUG_OBJECT (stream->pad, "Restarting download loop");
gst_task_start (stream->download_task);
}
@@ -704,6 +705,7 @@
stream = g_new0 (GstDashDemuxStream, 1);
stream->demux = demux;
stream->active_stream = active_stream;
+ stream->discont = FALSE;
caps = gst_dash_demux_get_input_caps (demux, active_stream);
g_rec_mutex_init (&stream->download_task_lock);
@@ -1942,6 +1944,11 @@
GST_BUFFER_PTS (buffer) = GST_CLOCK_TIME_NONE;
}
+ if (stream->discont) {
+ discont = TRUE;
+ stream->discont = FALSE;
+ }
+
if (discont) {
GST_DEBUG_OBJECT (stream->pad, "Marking fragment as discontinuous");
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
@@ -2184,9 +2191,10 @@
GstMediaFragmentInfo *fragment = &stream->current_fragment;
if (G_UNLIKELY (stream->restart_download)) {
+ GstSegment segment;
GstClockTime cur, ts;
gint64 pos;
- GstEvent *gap;
+ GstEvent *seg_event;
GST_DEBUG_OBJECT (stream->pad,
"Reactivating stream after to reconfigure event");
@@ -2206,14 +2214,18 @@
GST_DEBUG_OBJECT (stream->pad, "Restarting stream at "
"position %" GST_TIME_FORMAT, GST_TIME_ARGS (ts));
+ gst_segment_copy_into (&demux->segment, &segment);
if (GST_CLOCK_TIME_IS_VALID (ts)) {
gst_mpd_client_stream_seek (demux->client, stream->active_stream, ts);
if (cur < ts) {
- gap = gst_event_new_gap (cur, ts - cur);
- gst_pad_push_event (stream->pad, gap);
+ segment.position = ts;
}
}
+ seg_event = gst_event_new_segment (&segment);
+ GST_DEBUG_OBJECT (stream->pad, "Sending restart segment: %"
+ GST_PTR_FORMAT, seg_event);
+ gst_pad_push_event (stream->pad, seg_event);
stream->restart_download = FALSE;
}
diff --git a/ext/dash/gstdashdemux.h b/ext/dash/gstdashdemux.h
index 4e3a3ed..0c0f799 100644
--- a/ext/dash/gstdashdemux.h
+++ b/ext/dash/gstdashdemux.h
@@ -73,6 +73,7 @@
gboolean stream_eos;
gboolean need_header;
+ gboolean discont;
/* Download task */
GMutex download_mutex;
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index e106da9..d9313d5 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -360,21 +360,18 @@
wrong_length:
{
GST_DEBUG_OBJECT (faad, "codec_data less than 2 bytes long");
- gst_object_unref (faad);
gst_buffer_unmap (buf, &map);
return FALSE;
}
open_failed:
{
GST_DEBUG_OBJECT (faad, "failed to create decoder");
- gst_object_unref (faad);
gst_buffer_unmap (buf, &map);
return FALSE;
}
init_failed:
{
GST_DEBUG_OBJECT (faad, "faacDecInit2() failed");
- gst_object_unref (faad);
gst_buffer_unmap (buf, &map);
return FALSE;
}
diff --git a/ext/fluidsynth/gstfluiddec.c b/ext/fluidsynth/gstfluiddec.c
index 6b404af..124825b 100644
--- a/ext/fluidsynth/gstfluiddec.c
+++ b/ext/fluidsynth/gstfluiddec.c
@@ -322,6 +322,7 @@
res = gst_pad_push_event (fluiddec->srcpad, gst_event_new_caps (caps));
gst_caps_unref (caps);
+ gst_event_unref (event);
break;
}
case GST_EVENT_SEGMENT:
@@ -396,6 +397,9 @@
gst_buffer_map (buffer, &info, GST_MAP_READ);
+ if (info.size == 0)
+ goto done;
+
event = info.data[0];
switch (event & 0xf0) {
@@ -461,6 +465,9 @@
break;
}
}
+
+done:
+
gst_buffer_unmap (buffer, &info);
}
@@ -557,10 +564,14 @@
fluiddec->sf = fluid_synth_sfload (fluiddec->synth, filename, 1);
if (fluiddec->sf != -1) {
GST_DEBUG_OBJECT (fluiddec, "loaded soundfont file %s", filename);
+ g_free (filename);
+ g_dir_close (dir);
+ g_free (soundfont_path);
goto done;
}
GST_DEBUG_OBJECT (fluiddec, "could not load soundfont file %s",
filename);
+ g_free (filename);
}
g_dir_close (dir);
g_free (soundfont_path);
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index e79d3b6..c7e9a7b 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -358,6 +358,11 @@
g_mutex_clear (&glimage_sink->drawing_lock);
+ if (glimage_sink->other_context) {
+ gst_object_unref (glimage_sink->other_context);
+ glimage_sink->other_context = NULL;
+ }
+
g_free (glimage_sink->display_name);
GST_DEBUG ("finalized");
@@ -729,6 +734,7 @@
glimage_sink->upload = gst_gl_upload_new (glimage_sink->context);
gst_gl_upload_set_format (glimage_sink->upload, &vinfo);
+ glimage_sink->caps_change = TRUE;
return TRUE;
}
@@ -1020,6 +1026,9 @@
g_signal_emit (gl_sink, gst_glimage_sink_signals[CLIENT_RESHAPE_SIGNAL], 0,
width, height, &do_reshape);
+ gl_sink->window_width = width;
+ gl_sink->window_height = height;
+
/* default reshape */
if (!do_reshape) {
if (gl_sink->keep_aspect_ratio) {
@@ -1083,6 +1092,14 @@
/* opengl scene */
GST_TRACE ("redrawing texture:%u", gl_sink->redisplay_texture);
+ if (gl_sink->caps_change) {
+ GST_GLIMAGE_SINK_UNLOCK (gl_sink);
+ gst_glimage_sink_on_resize (gl_sink, gl_sink->window_width,
+ gl_sink->window_height);
+ GST_GLIMAGE_SINK_LOCK (gl_sink);
+ gl_sink->caps_change = FALSE;
+ }
+
/* make sure that the environnement is clean */
gst_gl_context_clear_shader (gl_sink->context);
diff --git a/ext/gl/gstglimagesink.h b/ext/gl/gstglimagesink.h
index efa557b..25e6a13 100644
--- a/ext/gl/gstglimagesink.h
+++ b/ext/gl/gstglimagesink.h
@@ -78,6 +78,10 @@
GstBuffer *stored_buffer;
GLuint redisplay_texture;
+ gboolean caps_change;
+ guint window_width;
+ guint window_height;
+
#if GST_GL_HAVE_GLES2
GstGLShader *redisplay_shader;
GLint redisplay_attr_position_loc;
diff --git a/ext/gl/gstglmixer.c b/ext/gl/gstglmixer.c
index 5aa1bea..6a2d9a4 100644
--- a/ext/gl/gstglmixer.c
+++ b/ext/gl/gstglmixer.c
@@ -99,6 +99,8 @@
gst_object_unref (pad->upload);
pad->upload = NULL;
}
+
+ G_OBJECT_CLASS (gst_gl_mixer_pad_parent_class)->finalize (object);
}
static void
@@ -131,6 +133,8 @@
mix->priv->negotiated = ret;
+ gst_caps_replace (&mix->out_caps, caps);
+
return ret;
}
@@ -827,32 +831,37 @@
gboolean res = TRUE;
guint array_index = 0;
GstVideoFrame out_frame;
- gboolean out_gl_wrapped = FALSE;
GstElement *element = GST_ELEMENT (mix);
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
GstGLMixerClass *mix_class = GST_GL_MIXER_GET_CLASS (mix);
GstGLMixerPrivate *priv = mix->priv;
+ gboolean to_download =
+ gst_caps_features_is_equal (GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY,
+ gst_caps_get_features (mix->out_caps, 0));
+ GstMapFlags out_map_flags = GST_MAP_WRITE;
GST_TRACE ("Processing buffers");
- if (!gst_video_frame_map (&out_frame, &vagg->info, outbuf,
- GST_MAP_WRITE | GST_MAP_GL)) {
+ to_download |= !gst_is_gl_memory (gst_buffer_peek_memory (outbuf, 0));
+
+ if (!to_download)
+ out_map_flags |= GST_MAP_GL;
+
+ if (!gst_video_frame_map (&out_frame, &vagg->info, outbuf, out_map_flags)) {
return FALSE;
}
- if (gst_is_gl_memory (out_frame.map[0].memory)) {
+ if (!to_download) {
out_tex = *(guint *) out_frame.data[0];
} else {
GST_INFO ("Output Buffer does not contain correct memory, "
"attempting to wrap for download");
- out_tex = mix->out_tex_id;;
-
if (!mix->download)
mix->download = gst_gl_download_new (mix->context);
gst_gl_download_set_format (mix->download, &out_frame.info);
- out_gl_wrapped = TRUE;
+ out_tex = mix->out_tex_id;
}
GST_OBJECT_LOCK (mix);
@@ -911,7 +920,7 @@
g_mutex_unlock (&priv->gl_resource_lock);
- if (out_gl_wrapped) {
+ if (to_download) {
if (!gst_gl_download_perform_with_data (mix->download, out_tex,
out_frame.data)) {
GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s",
diff --git a/ext/gl/gstglmixer.h b/ext/gl/gstglmixer.h
index a9e3a3c..d66ef30 100644
--- a/ext/gl/gstglmixer.h
+++ b/ext/gl/gstglmixer.h
@@ -69,6 +69,8 @@
GstGLContext *context;
GLuint fbo;
GLuint depthbuffer;
+
+ GstCaps *out_caps;
};
struct _GstGLMixerClass
diff --git a/ext/gl/gstgltestsrc.c b/ext/gl/gstgltestsrc.c
index b64ebe1..e443df0 100644
--- a/ext/gl/gstgltestsrc.c
+++ b/ext/gl/gstgltestsrc.c
@@ -334,6 +334,8 @@
gltestsrc->negotiated = TRUE;
+ gst_caps_replace (&gltestsrc->out_caps, caps);
+
return TRUE;
/* ERRORS */
@@ -449,14 +451,20 @@
static GstFlowReturn
gst_gl_test_src_fill (GstPushSrc * psrc, GstBuffer * buffer)
{
- GstGLTestSrc *src;
+ GstGLTestSrc *src = GST_GL_TEST_SRC (psrc);
GstClockTime next_time;
gint width, height;
GstVideoFrame out_frame;
- gboolean out_gl_wrapped = FALSE;
guint out_tex;
+ gboolean to_download =
+ gst_caps_features_is_equal (GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY,
+ gst_caps_get_features (src->out_caps, 0));
+ GstMapFlags out_map_flags = GST_MAP_WRITE;
- src = GST_GL_TEST_SRC (psrc);
+ to_download |= !gst_is_gl_memory (gst_buffer_peek_memory (buffer, 0));
+
+ if (!to_download)
+ out_map_flags |= GST_MAP_GL;
if (G_UNLIKELY (!src->negotiated || !src->context))
goto not_negotiated;
@@ -476,29 +484,27 @@
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)) {
+ if (!gst_video_frame_map (&out_frame, &src->out_info, buffer, out_map_flags)) {
return GST_FLOW_NOT_NEGOTIATED;
}
- if (gst_is_gl_memory (out_frame.map[0].memory)) {
+ if (!to_download) {
out_tex = *(guint *) out_frame.data[0];
} else {
GST_INFO ("Output Buffer does not contain correct meta, "
"attempting to wrap for download");
+ if (!src->download)
+ src->download = gst_gl_download_new (src->context);
+
+ gst_gl_download_set_format (src->download, &out_frame.info);
+
if (!src->out_tex_id) {
gst_gl_context_gen_texture (src->context, &src->out_tex_id,
GST_VIDEO_FORMAT_RGBA, GST_VIDEO_FRAME_WIDTH (&out_frame),
GST_VIDEO_FRAME_HEIGHT (&out_frame));
}
out_tex = src->out_tex_id;
-
- if (!src->download)
- src->download = gst_gl_download_new (src->context);
-
- gst_gl_download_set_format (src->download, &out_frame.info);
- out_gl_wrapped = TRUE;
}
gst_buffer_replace (&src->buffer, buffer);
@@ -510,7 +516,7 @@
goto not_negotiated;
}
- if (out_gl_wrapped) {
+ if (to_download) {
if (!gst_gl_download_perform_with_data (src->download, out_tex,
out_frame.data)) {
GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("%s",
@@ -571,6 +577,8 @@
{
GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc);
+ gst_caps_replace (&src->out_caps, NULL);
+
if (src->context) {
if (src->out_tex_id) {
gst_gl_context_del_texture (src->context, &src->out_tex_id);
diff --git a/ext/gl/gstgltestsrc.h b/ext/gl/gstgltestsrc.h
index 48e4d86..73f9f34 100644
--- a/ext/gl/gstgltestsrc.h
+++ b/ext/gl/gstgltestsrc.h
@@ -112,6 +112,8 @@
gboolean negotiated;
void (*make_image) (GstGLTestSrc* v, GstBuffer* buffer, gint w, gint h);
+
+ GstCaps *out_caps;
};
struct _GstGLTestSrcClass {
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index 7d761fc..0da8860 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -253,8 +253,8 @@
graphene_matrix_init_look_at (&view_matrix, &eye, ¢er, &up);
- graphene_matrix_multiply (&projection_matrix, &view_matrix, &vp_matrix);
- graphene_matrix_multiply (&vp_matrix, &model_matrix,
+ graphene_matrix_multiply (&view_matrix, &projection_matrix, &vp_matrix);
+ graphene_matrix_multiply (&model_matrix, &vp_matrix,
&transformation->mvp_matrix);
}
diff --git a/ext/gl/gstglvideomixer.c b/ext/gl/gstglvideomixer.c
index b9a1d68..22e9b7f 100644
--- a/ext/gl/gstglvideomixer.c
+++ b/ext/gl/gstglvideomixer.c
@@ -459,12 +459,14 @@
in_width = GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR_PAD (pad)->info);
in_height = GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR_PAD (pad)->info);
- if (!frame->texture || in_width <= 0 || in_height <= 0) {
- GST_DEBUG ("skipping texture:%u frame:%p width:%u height %u",
- frame->texture, frame, in_width, in_height);
+ if (!frame->texture || in_width <= 0 || in_height <= 0
+ || pad->alpha == 0.0f) {
+ GST_DEBUG ("skipping texture:%u frame:%p width:%u height:%u alpha:%f",
+ frame->texture, frame, in_width, in_height, pad->alpha);
count++;
continue;
}
+
in_tex = frame->texture;
pad_width = pad->width <= 0 ? in_width : pad->width;
pad_height = pad->height <= 0 ? in_height : pad->height;
@@ -495,9 +497,8 @@
gl->EnableVertexAttribArray (attr_position_loc);
gl->EnableVertexAttribArray (attr_texture_loc);
- gl->BlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE,
- GL_ZERO);
- gl->BlendEquationSeparate (GL_FUNC_ADD, GL_FUNC_ADD);
+ gl->BlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gl->BlendEquation (GL_FUNC_ADD);
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (GL_TEXTURE_2D, in_tex);
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index e890b5f..b11d07e 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -486,6 +486,7 @@
demux->discont = TRUE;
demux->new_playlist = TRUE;
demux->do_typefind = TRUE;
+ demux->end_of_playlist = FALSE;
gst_hls_demux_change_playlist (demux,
demux->current_download_rate * demux->bitrate_limit / ABS (rate));
@@ -513,6 +514,7 @@
demux->discont = TRUE;
demux->new_playlist = TRUE;
demux->do_typefind = TRUE;
+ demux->end_of_playlist = FALSE;
gst_hls_demux_change_playlist (demux,
demux->current_download_rate * demux->bitrate_limit);
diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c
index 58ee057..0e2e850 100644
--- a/ext/rtmp/gstrtmpsink.c
+++ b/ext/rtmp/gstrtmpsink.c
@@ -136,9 +136,12 @@
static void
gst_rtmp_sink_finalize (GObject * object)
{
+ GstRTMPSink *sink = GST_RTMP_SINK (object);
+
#ifdef G_OS_WIN32
WSACleanup ();
#endif
+ g_free (sink->uri);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c
index 9274600..e12ed93 100644
--- a/gst-libs/gst/base/gstaggregator.c
+++ b/gst-libs/gst/base/gstaggregator.c
@@ -706,6 +706,10 @@
gst_aggregator_iterate_sinkpads (agg,
(GstAggregatorPadForeachFunc) _flush_pad, NULL);
+ if (agg->priv->tags)
+ gst_tag_list_unref (agg->priv->tags);
+ agg->priv->tags = NULL;
+
return TRUE;
}
diff --git a/gst-libs/gst/codecparsers/gstvc1parser.h b/gst-libs/gst/codecparsers/gstvc1parser.h
index e2720d7..a73ff9d 100644
--- a/gst-libs/gst/codecparsers/gstvc1parser.h
+++ b/gst-libs/gst/codecparsers/gstvc1parser.h
@@ -84,8 +84,8 @@
typedef enum
{
GST_VC1_LEVEL_LOW = 0, /* Simple/Main profile low level */
- GST_VC1_LEVEL_MEDIUM = 1, /* Simple/Main profile medium level */
- GST_VC1_LEVEL_HIGH = 2, /* Main profile high level */
+ GST_VC1_LEVEL_MEDIUM = 2, /* Simple/Main profile medium level */
+ GST_VC1_LEVEL_HIGH = 4, /* Main profile high level */
GST_VC1_LEVEL_L0 = 0, /* Advanced profile level 0 */
GST_VC1_LEVEL_L1 = 1, /* Advanced profile level 1 */
diff --git a/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h b/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
index 4510cb2..fa7178b 100644
--- a/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
+++ b/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
@@ -30,48 +30,27 @@
G_BEGIN_DECLS
-@interface AppThreadPerformer : NSObject {
- GstGLWindowCocoa *m_cocoa;
- GstGLWindowCB m_callback;
- GstGLWindowResizeCB m_callback2;
- gpointer m_data;
- gint m_width;
- gint m_height;
-}
-- (id) init: (GstGLWindowCocoa *)window;
-- (id) initWithCallback:(GstGLWindowCocoa *)window callback:(GstGLWindowCB)callback userData:(gpointer) data;
-- (id) initWithSize: (GstGLWindowCocoa *)window callback:(GstGLWindowResizeCB)callback userData:(gpointer)data toSize:(NSSize)size;
-- (id) initWithAll: (GstGLWindowCocoa *)window callback:(GstGLWindowCB)callback userData:(gpointer) data;
-- (void) updateWindow;
-- (void) sendToApp;
-- (void) setWindow;
-- (void) stopApp;
-- (void) closeWindow;
-@end
-
struct _GstGLContextCocoaPrivate
{
NSOpenGLContext *gl_context;
NSOpenGLContext *external_gl_context;
- NSRect rect;
gint source_id;
};
/* =============================================================*/
/* */
-/* GstGLNSOpenGLView declaration */
+/* GstGLNSView declaration */
/* */
/* =============================================================*/
-@interface GstGLNSOpenGLView: NSOpenGLView {
- GstGLWindowCocoa *m_cocoa;
+@interface GstGLNSView: NSView {
+ GstGLWindowCocoa *window_cocoa;
}
-- (id) initWithFrame:(GstGLWindowCocoa *)window rect:(NSRect)contentRect
- pixelFormat:(NSOpenGLPixelFormat *)fmt;
+- (id) initWithFrame:(GstGLWindowCocoa *)window rect:(NSRect)contentRect;
@end
-gboolean gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa);
+gboolean gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa, NSRect rect);
G_END_DECLS
diff --git a/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m b/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
index cd45857..7a12650 100644
--- a/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
@@ -85,7 +85,7 @@
if ([NSThread isMainThread]) {
while ((event = ([NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]
+ untilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]
inMode:NSDefaultRunLoopMode dequeue:YES])) != nil) {
[NSApp sendEvent:event];
@@ -135,7 +135,7 @@
if ([NSThread isMainThread]) {
/* In the main thread so just do the call now */
-
+
/* The sharedApplication class method initializes
* the display environment and connects your program
* to the window server and the display server
@@ -154,24 +154,40 @@
* glib main loop running this is for debugging
* purposes so that's ok to let us a chance
*/
+ GMainContext *context;
gboolean is_loop_running = FALSE;
gint64 end_time = 0;
- g_mutex_init (&nsapp_lock);
- g_cond_init (&nsapp_cond);
+ context = g_main_context_default ();
- g_mutex_lock (&nsapp_lock);
- g_idle_add_full (G_PRIORITY_HIGH, gst_gl_window_cocoa_init_nsapp, NULL, NULL);
- end_time = g_get_monotonic_time () + 2 * 1000 * 1000;
- is_loop_running = g_cond_wait_until (&nsapp_cond, &nsapp_lock, end_time);
- g_mutex_unlock (&nsapp_lock);
+ if (g_main_context_is_owner (context)) {
+ /* At the thread running the default GLib main context but
+ * not the Cocoa main thread
+ * We can't do anything here
+ */
+ } else if (g_main_context_acquire (context)) {
+ /* No main loop running on the default main context,
+ * we can't do anything here */
+ g_main_context_release (context);
+ } else {
+ /* Main loop running on the default main context but it
+ * is not running in this thread */
+ g_mutex_init (&nsapp_lock);
+ g_cond_init (&nsapp_cond);
- if (!is_loop_running) {
- GST_WARNING ("no mainloop running");
+ g_mutex_lock (&nsapp_lock);
+ g_idle_add_full (G_PRIORITY_HIGH, gst_gl_window_cocoa_init_nsapp, NULL, NULL);
+ end_time = g_get_monotonic_time () + 500 * 1000;
+ is_loop_running = g_cond_wait_until (&nsapp_cond, &nsapp_lock, end_time);
+ g_mutex_unlock (&nsapp_lock);
+
+ if (!is_loop_running) {
+ GST_WARNING ("no mainloop running");
+ }
+
+ g_cond_clear (&nsapp_cond);
+ g_mutex_clear (&nsapp_lock);
}
-
- g_cond_clear (&nsapp_cond);
- g_mutex_clear (&nsapp_lock);
}
[pool release];
@@ -201,17 +217,11 @@
GstGLContextCocoaPrivate *priv = context_cocoa->priv;
GstGLWindow *window = gst_gl_context_get_window (context);
GstGLWindowCocoa *window_cocoa = GST_GL_WINDOW_COCOA (window);
- GstGLNSOpenGLView *glView = nil;
- NSWindow *window_handle;
- NSRect rect;
- NSAutoreleasePool *pool;
- NSOpenGLPixelFormat *fmt = nil;
- NSOpenGLContext *glContext = nil;
- NSOpenGLPixelFormatAttribute attribs[] = {
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFAAccumSize, 32,
- 0
- };
+ __block NSOpenGLContext *glContext = nil;
+
+#ifndef GNUSTEP
+ priv->source_id = g_timeout_add (200, gst_gl_window_cocoa_nsapp_iteration, NULL);
+#endif
priv->gl_context = nil;
if (other_context)
@@ -219,56 +229,64 @@
else
priv->external_gl_context = NULL;
-#ifdef GNUSTEP
- GSRegisterCurrentThread();
-#endif
+ dispatch_sync (dispatch_get_main_queue (), ^{
+ NSAutoreleasePool *pool;
+ NSOpenGLPixelFormat *fmt = nil;
+ GstGLNSView *glView = nil;
+ NSOpenGLPixelFormatAttribute attribs[] = {
+ NSOpenGLPFADoubleBuffer,
+ NSOpenGLPFAAccumSize, 32,
+ 0
+ };
+ NSRect rect;
+ NSWindow *window_handle;
- pool = [[NSAutoreleasePool alloc] init];
+ pool = [[NSAutoreleasePool alloc] init];
#ifdef GNUSTEP
- [NSApplication sharedApplication];
+ [NSApplication sharedApplication];
#endif
+ rect.origin.x = 0;
+ rect.origin.y = 0;
+ rect.size.width = 320;
+ rect.size.height = 240;
- rect.origin.x = 0;
- rect.origin.y = 0;
- rect.size.width = 320;
- rect.size.height = 240;
+ gst_gl_window_cocoa_create_window (window_cocoa, rect);
+ window_handle = (NSWindow *) gst_gl_window_get_window_handle (window);
- priv->rect = rect;
+ fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs];
+ if (!fmt) {
+ gst_object_unref (window);
+ GST_WARNING ("cannot create NSOpenGLPixelFormat");
+ return;
+ }
- gst_gl_window_cocoa_create_window (window_cocoa);
- window_handle = (NSWindow *) gst_gl_window_get_window_handle (window);
+ glView = [[GstGLNSView alloc] initWithFrame:window_cocoa rect:rect];
- glView = [GstGLNSOpenGLView alloc];
-
- fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs];
-
- if (!fmt) {
- gst_object_unref (window);
- GST_WARNING ("cannot create NSOpenGLPixelFormat");
- return FALSE;
- }
-
- glView = [glView initWithFrame:window_cocoa rect:rect pixelFormat:fmt];
-
- [window_handle setContentView:glView];
+ [window_handle setContentView:glView];
#ifndef GNUSTEP
- glContext = [[NSOpenGLContext alloc] initWithFormat:fmt
- shareContext:context_cocoa->priv->external_gl_context];
+ glContext = [[NSOpenGLContext alloc] initWithFormat:fmt
+ shareContext:context_cocoa->priv->external_gl_context];
- GST_DEBUG ("NSOpenGL context created: %"G_GUINTPTR_FORMAT, (guintptr) glContext);
+ GST_DEBUG ("NSOpenGL context created: %"G_GUINTPTR_FORMAT, (guintptr) glContext);
- context_cocoa->priv->gl_context = glContext;
+ context_cocoa->priv->gl_context = glContext;
- [glContext setView:glView];
-
- [glView setOpenGLContext:glContext];
+ [glContext setView:glView];
#else
- /* FIXME try to make context sharing work in GNUstep */
- context_cocoa->priv->gl_context = [glView openGLContext];
+ /* FIXME try to make context sharing work in GNUstep */
+ context_cocoa->priv->gl_context = glContext;
#endif
+ [pool release];
+ });
+
+ if (!glContext) {
+ g_source_remove (priv->source_id);
+ priv->source_id = 0;
+ return FALSE;
+ }
/* OpenGL context is made current only one time threre.
* Indeed, all OpenGL calls are made in only one thread,
@@ -287,21 +305,14 @@
#else
const GLint swapInterval = 1;
#endif
- [[glView openGLContext] setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
+ [glContext setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
}
} NS_HANDLER {
GST_DEBUG ("your back-end does not implement NSOpenglContext::setValues\n");
}
NS_ENDHANDLER
- GST_DEBUG ("opengl GstGLNSWindow initialized: %d x %d\n",
- (gint) rect.size.width, (gint) rect.size.height);
-
- [pool release];
-
-#ifndef GNUSTEP
- priv->source_id = g_timeout_add_seconds (1, gst_gl_window_cocoa_nsapp_iteration, NULL);
-#endif
+ GST_DEBUG ("opengl GstGLNSWindow initialized");
gst_object_unref (window);
@@ -311,6 +322,14 @@
static void
gst_gl_context_cocoa_destroy_context (GstGLContext *context)
{
+ GstGLContextCocoa *context_cocoa = GST_GL_CONTEXT_COCOA (context);
+ GstGLContextCocoaPrivate *priv = context_cocoa->priv;
+
+ /* FIXME: Need to release context and other things? */
+ if (priv->source_id) {
+ g_source_remove (priv->source_id);
+ priv->source_id = 0;
+ }
}
static guintptr
@@ -328,11 +347,8 @@
if (activate)
[context_cocoa->priv->gl_context makeCurrentContext];
-#if 0
else
- /* FIXME */
- [context_cocoa->priv->gl_context clearCurrentContext];
-#endif
+ [NSOpenGLContext clearCurrentContext];
return TRUE;
}
diff --git a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
index 2de31d7..3f7cba7 100644
--- a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
@@ -1,6 +1,7 @@
/*
* GStreamer
* Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2014 Sebastian Dröge <sebastian@centricular.com>
*
* This library is free software; you can redistribute it and/or
* modify it un der the terms of the GNU Library General Public
@@ -34,7 +35,7 @@
@interface GstGLNSWindow: NSWindow {
BOOL m_isClosed;
- GstGLWindowCocoa *m_cocoa;
+ GstGLWindowCocoa *window_cocoa;
}
- (id)initWithContentRect:(NSRect)contentRect
styleMask: (unsigned int) styleMask
@@ -53,11 +54,6 @@
/* */
/* =============================================================*/
-#ifndef GNUSTEP
-static BOOL GSRegisterCurrentThread(void) { return TRUE; };
-static void GSUnregisterCurrentThread(void) {};
-#endif
-
#define GST_GL_WINDOW_COCOA_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), GST_GL_TYPE_WINDOW_COCOA, GstGLWindowCocoaPrivate))
@@ -69,6 +65,8 @@
#define gst_gl_window_cocoa_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLWindowCocoa, gst_gl_window_cocoa, GST_GL_TYPE_WINDOW, DEBUG_INIT);
+static gboolean gst_gl_window_cocoa_open (GstGLWindow *window, GError **err);
+static void gst_gl_window_cocoa_close (GstGLWindow *window);
static guintptr gst_gl_window_cocoa_get_window_handle (GstGLWindow * window);
static void gst_gl_window_cocoa_set_window_handle (GstGLWindow * window,
guintptr handle);
@@ -83,8 +81,10 @@
GstGLNSWindow *internal_win_id;
NSView *external_view;
gboolean visible;
- NSThread *thread;
- gboolean running;
+ GMainContext *main_context;
+ GMainLoop *loop;
+
+ GLint viewport_dim[4];
};
static void
@@ -96,6 +96,8 @@
g_type_class_add_private (klass, sizeof (GstGLWindowCocoaPrivate));
+ window_class->open = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_open);
+ window_class->close = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_close);
window_class->get_window_handle =
GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_get_window_handle);
window_class->set_window_handle =
@@ -123,31 +125,52 @@
return window;
}
+/* Must be called from the main thread */
gboolean
-gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa)
+gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa, NSRect rect)
{
- GstGLWindow *window = GST_GL_WINDOW (window_cocoa);
- GstGLContext *context = gst_gl_window_get_context (window);
- GstGLContextCocoa *context_cocoa = GST_GL_CONTEXT_COCOA (context);
GstGLWindowCocoaPrivate *priv = window_cocoa->priv;
- NSRect rect = context_cocoa->priv->rect;
- priv->internal_win_id =[[GstGLNSWindow alloc] initWithContentRect:rect styleMask:
- (NSTitledWindowMask | NSClosableWindowMask |
- NSResizableWindowMask | NSMiniaturizableWindowMask)
- backing: NSBackingStoreBuffered defer: NO screen: nil gstWin: window_cocoa];
+ priv->internal_win_id = [[GstGLNSWindow alloc] initWithContentRect:rect styleMask:
+ (NSTitledWindowMask | NSClosableWindowMask |
+ NSResizableWindowMask | NSMiniaturizableWindowMask)
+ backing: NSBackingStoreBuffered defer: NO screen: nil gstWin: window_cocoa];
- GST_DEBUG ("NSWindow id: %"G_GUINTPTR_FORMAT, (guintptr) priv->internal_win_id);
+ GST_DEBUG ("NSWindow id: %"G_GUINTPTR_FORMAT, (guintptr) priv->internal_win_id);
- priv->thread = [NSThread currentThread];
-
- [NSApp setDelegate: priv->internal_win_id];
-
- gst_object_unref (context);
+ [NSApp setDelegate: priv->internal_win_id];
return TRUE;
}
+static gboolean
+gst_gl_window_cocoa_open (GstGLWindow *window, GError **err)
+{
+ GstGLWindowCocoa *window_cocoa;
+
+ window_cocoa = GST_GL_WINDOW_COCOA (window);
+
+ window_cocoa->priv->main_context = g_main_context_new ();
+ window_cocoa->priv->loop =
+ g_main_loop_new (window_cocoa->priv->main_context, FALSE);
+
+ return TRUE;
+}
+
+static void
+gst_gl_window_cocoa_close (GstGLWindow *window)
+{
+ GstGLWindowCocoa *window_cocoa;
+
+ window_cocoa = GST_GL_WINDOW_COCOA (window);
+
+ g_main_loop_unref (window_cocoa->priv->loop);
+ g_main_context_unref (window_cocoa->priv->main_context);
+
+ [window_cocoa->priv->internal_win_id release];
+ window_cocoa->priv->internal_win_id = nil;
+}
+
static guintptr
gst_gl_window_cocoa_get_window_handle (GstGLWindow *window)
{
@@ -162,22 +185,8 @@
window_cocoa = GST_GL_WINDOW_COCOA (window);
priv = window_cocoa->priv;
-
+
if (priv->internal_win_id) {
- GstGLContextCocoa *context = (GstGLContextCocoa *) gst_gl_window_get_context (window);
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc] init:window_cocoa];
-
- GSRegisterCurrentThread();
-
- if (context) {
- if (context->priv->source_id) {
- g_source_remove (context->priv->source_id);
- context->priv->source_id = 0;
- }
- gst_object_unref (context);
- }
-
if (handle) {
priv->external_view = (NSView *) handle;
priv->visible = TRUE;
@@ -186,109 +195,119 @@
priv->external_view = 0;
priv->visible = FALSE;
}
-
- [app_thread_performer performSelectorOnMainThread:@selector(setWindow)
- withObject:0 waitUntilDone:YES];
- [pool release];
+
+ dispatch_async (dispatch_get_main_queue (), ^{
+ NSView *view = [window_cocoa->priv->internal_win_id contentView];
+ [window_cocoa->priv->internal_win_id orderOut:window_cocoa->priv->internal_win_id];
+
+ [window_cocoa->priv->external_view addSubview: view];
+
+ [view setFrame: [window_cocoa->priv->external_view bounds]];
+ [view setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable];
+ });
} else {
- /* not internal window yet so delay it to the next drawing */
+ /* no internal window yet so delay it to the next drawing */
priv->external_view = (NSView*) handle;
priv->visible = FALSE;
}
}
/* Thread safe */
-static void
-gst_gl_window_cocoa_draw (GstGLWindow * window, guint width, guint height)
+struct draw
{
- GstGLWindowCocoa *window_cocoa;
- GstGLWindowCocoaPrivate *priv;
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- AppThreadPerformer* app_thread_performer;
+ GstGLWindowCocoa *window;
+ guint width, height;
+};
- window_cocoa = GST_GL_WINDOW_COCOA (window);
- priv = window_cocoa->priv;
-
- GSRegisterCurrentThread();
-
- app_thread_performer = [[AppThreadPerformer alloc] init:window_cocoa];
+static void
+draw_cb (gpointer data)
+{
+ struct draw *draw_data = data;
+ GstGLWindowCocoa *window_cocoa = draw_data->window;
+ GstGLWindowCocoaPrivate *priv = window_cocoa->priv;
/* useful when set_window_handle is called before
* the internal NSWindow */
if (priv->external_view && !priv->visible) {
- gst_gl_window_cocoa_set_window_handle (window, (guintptr) priv->external_view);
+ gst_gl_window_cocoa_set_window_handle (GST_GL_WINDOW (window_cocoa), (guintptr) priv->external_view);
priv->visible = TRUE;
}
if (!priv->external_view && !priv->visible) {
- static gint x = 0;
- static gint y = 0;
+ dispatch_sync (dispatch_get_main_queue (), ^{
+ NSRect mainRect = [[NSScreen mainScreen] visibleFrame];
+ NSRect windowRect = [priv->internal_win_id frame];
+ gint x = 0;
+ gint y = 0;
- NSRect mainRect = [[NSScreen mainScreen] visibleFrame];
- NSRect windowRect = [priv->internal_win_id frame];
+ GST_DEBUG ("main screen rect: %d %d %d %d\n", (int) mainRect.origin.x,
+ (int) mainRect.origin.y, (int) mainRect.size.width,
+ (int) mainRect.size.height);
- GST_DEBUG ("main screen rect: %d %d %d %d\n", (int) mainRect.origin.x,
- (int) mainRect.origin.y, (int) mainRect.size.width,
- (int) mainRect.size.height);
+ windowRect.origin.x += x;
+ windowRect.origin.y += mainRect.size.height > y ? (mainRect.size.height - y) * 0.5 : y;
+ windowRect.size.width = draw_data->width;
+ windowRect.size.height = draw_data->height;
- windowRect.origin.x += x;
- windowRect.origin.y += mainRect.size.height > y ? (mainRect.size.height - y) * 0.5 : y;
- windowRect.size.width = width;
- windowRect.size.height = height;
+ GST_DEBUG ("window rect: %d %d %d %d\n", (int) windowRect.origin.x,
+ (int) windowRect.origin.y, (int) windowRect.size.width,
+ (int) windowRect.size.height);
- GST_DEBUG ("window rect: %d %d %d %d\n", (int) windowRect.origin.x,
- (int) windowRect.origin.y, (int) windowRect.size.width,
- (int) windowRect.size.height);
-
- x += 20;
- y += 20;
+ x += 20;
+ y += 20;
#ifndef GNUSTEP
- [priv->internal_win_id setFrame:windowRect display:NO];
- GST_DEBUG ("make the window available\n");
- [priv->internal_win_id makeMainWindow];
+ [priv->internal_win_id setFrame:windowRect display:NO];
+ GST_DEBUG ("make the window available\n");
+ [priv->internal_win_id makeMainWindow];
#endif
- [app_thread_performer performSelector:@selector(orderFront)
- onThread:priv->thread withObject:nil waitUntilDone:YES];
- /*[priv->internal_win_id setViewsNeedDisplay:YES]; */
+ [priv->internal_win_id orderFrontRegardless];
+
+ [priv->internal_win_id setViewsNeedDisplay:YES];
+ });
priv->visible = TRUE;
}
- [app_thread_performer performSelector:@selector(updateWindow)
- onThread:priv->thread withObject:nil waitUntilDone:YES];
+ if (g_main_loop_is_running (priv->loop)) {
+ if (![priv->internal_win_id isClosed]) {
+ GstGLContext *context = gst_gl_window_get_context (GST_GL_WINDOW (window_cocoa));
+ NSOpenGLContext * glContext = (NSOpenGLContext *) gst_gl_context_get_gl_context (context);
- [pool release];
+ /* draw opengl scene in the back buffer */
+ GST_GL_WINDOW (window_cocoa)->draw (GST_GL_WINDOW (window_cocoa)->draw_data);
+
+ /* Copy the back buffer to the front buffer */
+ [glContext flushBuffer];
+
+ gst_object_unref (context);
+ }
+ }
+}
+
+static void
+gst_gl_window_cocoa_draw (GstGLWindow * window, guint width, guint height)
+{
+ struct draw draw_data;
+
+ draw_data.window = GST_GL_WINDOW_COCOA (window);
+ draw_data.width = width;
+ draw_data.height = height;
+
+ gst_gl_window_send_message (window, (GstGLWindowCB) draw_cb, &draw_data);
}
static void
gst_gl_window_cocoa_run (GstGLWindow * window)
{
GstGLWindowCocoa *window_cocoa;
- GstGLWindowCocoaPrivate *priv;
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSRunLoop *run_loop = [NSRunLoop currentRunLoop];
window_cocoa = GST_GL_WINDOW_COCOA (window);
- priv = window_cocoa->priv;
- [run_loop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
-
- GST_DEBUG ("begin loop\n");
-
- if (priv->internal_win_id != nil) {
- priv->running = TRUE;
- while (priv->running)
- [run_loop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
-
- [priv->internal_win_id release];
- priv->internal_win_id = nil;
- }
-
- [pool release];
-
- GST_DEBUG ("end loop\n");
+ GST_LOG ("starting main loop");
+ g_main_loop_run (window_cocoa->priv->loop);
+ GST_LOG ("exiting main loop");
}
/* Thread safe */
@@ -296,60 +315,50 @@
gst_gl_window_cocoa_quit (GstGLWindow * window)
{
GstGLWindowCocoa *window_cocoa;
- GstGLWindowCocoaPrivate *priv;
window_cocoa = GST_GL_WINDOW_COCOA (window);
- priv = window_cocoa->priv;
- if (window) {
- if (GSRegisterCurrentThread() || 1) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc]
- initWithAll:window_cocoa callback:NULL userData:NULL];
- [app_thread_performer performSelector:@selector(stopApp)
- onThread:priv->thread withObject:nil waitUntilDone:YES];
-
- [pool release];
-
- GSUnregisterCurrentThread();
- }
- else
- GST_DEBUG ("failed to register current thread, application thread is lost\n");
- }
+ g_main_loop_quit (window_cocoa->priv->loop);
}
/* Thread safe */
+typedef struct _GstGLMessage
+{
+ GstGLWindowCB callback;
+ gpointer data;
+ GDestroyNotify destroy;
+} GstGLMessage;
+
+static gboolean
+_run_message (GstGLMessage * message)
+{
+ if (message->callback)
+ message->callback (message->data);
+
+ if (message->destroy)
+ message->destroy (message->data);
+
+ g_slice_free (GstGLMessage, message);
+
+ return FALSE;
+}
+
static void
gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
{
GstGLWindowCocoa *window_cocoa;
- GstGLWindowCocoaPrivate *priv;
+ GstGLMessage *message;
window_cocoa = GST_GL_WINDOW_COCOA (window);
- priv = window_cocoa->priv;
+ message = g_slice_new (GstGLMessage);
- GSRegisterCurrentThread ();
+ message->callback = callback;
+ message->data = data;
+ message->destroy = destroy;
- if (window) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- /* performSelector is not re-entrant so do it manually */
- if (G_UNLIKELY ([NSThread currentThread] == priv->thread)) {
- if (callback)
- callback (data);
- } else {
- AppThreadPerformer* app_thread_performer =
- [[AppThreadPerformer alloc] initWithAll:window_cocoa
- callback:callback userData:data];
-
- [app_thread_performer performSelector:@selector(sendToApp)
- onThread:priv->thread withObject:nil waitUntilDone:NO];
-
- [pool release];
- }
- }
+ g_main_context_invoke (window_cocoa->priv->main_context,
+ (GSourceFunc) _run_message, message);
}
/* =============================================================*/
@@ -358,6 +367,7 @@
/* */
/* =============================================================*/
+/* Must be called from the main thread */
@implementation GstGLNSWindow
- (id) initWithContentRect: (NSRect) contentRect
@@ -367,7 +377,7 @@
gstWin: (GstGLWindowCocoa *) cocoa {
m_isClosed = NO;
- m_cocoa = cocoa;
+ window_cocoa = cocoa;
self = [super initWithContentRect: contentRect
styleMask: styleMask backing: bufferingType
@@ -381,14 +391,14 @@
[self setBackgroundColor:[NSColor clearColor]];
- [self orderOut:m_cocoa->priv->internal_win_id];
+ [self orderOut:window_cocoa->priv->internal_win_id];
- if (m_cocoa->priv->external_view) {
+ if (window_cocoa->priv->external_view) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSView *view = [m_cocoa->priv->internal_win_id contentView];
+ NSView *view = [window_cocoa->priv->internal_win_id contentView];
- [m_cocoa->priv->external_view addSubview: view];
- [view setFrame: [m_cocoa->priv->external_view bounds]];
+ [window_cocoa->priv->external_view addSubview: view];
+ [view setFrame: [window_cocoa->priv->external_view bounds]];
[view setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable];
[pool release];
@@ -413,20 +423,25 @@
return YES;
}
+static void
+close_window_cb (gpointer data)
+{
+ GstGLWindowCocoa *window_cocoa = data;
+ GstGLWindow *window;
+
+ window = GST_GL_WINDOW (window_cocoa);
+
+ if (window->close) {
+ window->close (window->close_data);
+ }
+}
+
/* Called in the main thread which is never the gl thread */
- (BOOL) windowShouldClose:(id)sender {
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc]
- init:m_cocoa];
-
+
GST_DEBUG ("user clicked the close button\n");
-
- [app_thread_performer performSelector:@selector(closeWindow) onThread:m_cocoa->priv->thread
- withObject:nil waitUntilDone:YES];
-
- [pool release];
-
+ [window_cocoa->priv->internal_win_id setClosed];
+ gst_gl_window_send_message_async (GST_GL_WINDOW (window_cocoa), (GstGLWindowCB) close_window_cb, gst_object_ref (window_cocoa), (GDestroyNotify) gst_object_unref);
return YES;
}
@@ -460,175 +475,124 @@
/* =============================================================*/
/* */
-/* GstGLNSOpenGLView implementation */
+/* GstGLNSView implementation */
/* */
/* =============================================================*/
-@implementation GstGLNSOpenGLView
+@implementation GstGLNSView
-- (id)initWithFrame:(GstGLWindowCocoa *)window rect:(NSRect)contentRect pixelFormat:(NSOpenGLPixelFormat *)fmt {
+/* Must be called from the application main thread */
+- (id)initWithFrame:(GstGLWindowCocoa *)window rect:(NSRect)contentRect {
- self = [super initWithFrame: contentRect pixelFormat: fmt];
+ self = [super initWithFrame: contentRect];
- m_cocoa = window;
+ window_cocoa = window;
#ifndef GNUSTEP
[self setWantsLayer:NO];
#endif
+ /* Get notified about changes */
+ [self setPostsFrameChangedNotifications:YES];
+ [[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(reshape:) name: NSViewFrameDidChangeNotification object: self];
+ [self setWantsBestResolutionOpenGLSurface:YES];
+
return self;
}
-- (void)reshape {
+- (void) dealloc {
+ [[NSNotificationCenter defaultCenter] removeObserver: self];
+ [super dealloc];
+}
+
+struct resize
+{
+ GstGLWindowCocoa * window;
+ NSRect bounds, visibleRect;
+};
+
+static void
+resize_cb (gpointer data)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ struct resize *resize_data = data;
+ GstGLWindowCocoa *window_cocoa = resize_data->window;
+ GstGLWindow *window = GST_GL_WINDOW (window_cocoa);
+ GstGLContext *context = gst_gl_window_get_context (window);
+ NSOpenGLContext * glContext = (NSOpenGLContext *) gst_gl_context_get_gl_context (context);
+
+ if (g_main_loop_is_running (window_cocoa->priv->loop) && ![window_cocoa->priv->internal_win_id isClosed]) {
+ const GstGLFuncs *gl;
+
+ [glContext update];
+
+ gl = context->gl_vtable;
+
+ if (window->resize) {
+ window->resize (window->resize_data, resize_data->bounds.size.width, resize_data->bounds.size.height);
+ gl->GetIntegerv (GL_VIEWPORT, window_cocoa->priv->viewport_dim);
+ }
+
+ gl->Viewport (window_cocoa->priv->viewport_dim[0] - resize_data->visibleRect.origin.x,
+ window_cocoa->priv->viewport_dim[1] - resize_data->visibleRect.origin.y,
+ window_cocoa->priv->viewport_dim[2], window_cocoa->priv->viewport_dim[3]);
+
+ GST_GL_WINDOW (window_cocoa)->draw (GST_GL_WINDOW (window_cocoa)->draw_data);
+ [glContext flushBuffer];
+ }
+ gst_object_unref (context);
+ [pool release];
+}
+
+- (void)renewGState {
+ /* Don't update the screen until we redraw, this
+ * prevents flickering during scrolling, clipping,
+ * resizing, etc
+ */
+ [[self window] disableScreenUpdatesUntilFlush];
+
+ [super renewGState];
+}
+
+- (void)reshape: (NSNotification*)notification {
GstGLWindow *window;
- window = GST_GL_WINDOW (m_cocoa);
+ window = GST_GL_WINDOW (window_cocoa);
if (window->resize) {
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSRect bounds = [self bounds];
- AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc]
- initWithSize:m_cocoa callback:window->resize userData:window->resize_data
- toSize:bounds.size];
+ NSRect visibleRect = [self visibleRect];
+ struct resize *resize_data = g_new (struct resize, 1);
- [app_thread_performer performSelector:@selector(resizeWindow) onThread:m_cocoa->priv->thread
- withObject:nil waitUntilDone:YES];
+ bounds = [self convertRectToBacking:bounds];
+ visibleRect = [self convertRectToBacking:visibleRect];
- [pool release];
+ GST_DEBUG_OBJECT (window, "Window resized: bounds %lf %lf %lf %lf "
+ "visibleRect %lf %lf %lf %lf",
+ bounds.origin.x, bounds.origin.y,
+ bounds.size.width, bounds.size.height,
+ visibleRect.origin.x, visibleRect.origin.y,
+ visibleRect.size.width, visibleRect.size.height);
+
+ resize_data->window = window_cocoa;
+ resize_data->bounds = bounds;
+ resize_data->visibleRect = visibleRect;
+
+ gst_gl_window_send_message_async (GST_GL_WINDOW (window_cocoa), (GstGLWindowCB) resize_cb, resize_data, (GDestroyNotify) g_free);
}
}
-- (void) update {
+- (void)drawRect: (NSRect)dirtyRect {
+ [self reshape:nil];
+}
+
+- (BOOL) isOpaque {
+ return YES;
+}
+
+- (BOOL) isFlipped {
+ return NO;
}
@end
-/* =============================================================*/
-/* */
-/* AppThreadPerformer implementation */
-/* */
-/* =============================================================*/
-
-@implementation AppThreadPerformer
-
-- (id) init: (GstGLWindowCocoa *) window {
- m_cocoa = window;
- m_callback = NULL;
- m_callback2 = NULL;
- m_data = NULL;
- m_width = 0;
- m_height = 0;
- return self;
-}
-
-- (id) initWithCallback:(GstGLWindowCocoa *)window callback:(GstGLWindowCB)callback userData:(gpointer)data {
- m_cocoa = window;
- m_callback = callback;
- m_callback2 = NULL;
- m_data = data;
- m_width = 0;
- m_height = 0;
- return self;
-}
-
-- (id) initWithSize: (GstGLWindowCocoa *) window
- callback:(GstGLWindowResizeCB)callback userData:(gpointer)data
- toSize:(NSSize)size {
- m_cocoa = window;
- m_callback = NULL;
- m_callback2 = callback;
- m_data = data;
- m_width = size.width;
- m_height = size.height;
- return self;
-}
-
-- (id) initWithAll: (GstGLWindowCocoa *) window
- callback:(GstGLWindowCB) callback userData: (gpointer) data {
- m_cocoa = window;
- m_callback = callback;
- m_callback2 = NULL;
- m_data = data;
- m_width = 0;
- m_height = 0;
- return self;
-}
-
-- (void) updateWindow {
- if (m_cocoa->priv->running) {
-
- if (![m_cocoa->priv->internal_win_id isClosed]) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- /* draw opengl scene in the back buffer */
- GST_GL_WINDOW (m_cocoa)->draw (GST_GL_WINDOW (m_cocoa)->draw_data);
- /* Copy the back buffer to the front buffer */
- [[[m_cocoa->priv->internal_win_id contentView] openGLContext] flushBuffer];
-
- [pool release];
- }
- }
-}
-
-- (void) resizeWindow {
- if (m_cocoa->priv->running && ![m_cocoa->priv->internal_win_id isClosed]) {
- m_callback2 (m_data, m_width, m_height);
- [[[m_cocoa->priv->internal_win_id contentView] openGLContext] update];
- GST_GL_WINDOW (m_cocoa)->draw (GST_GL_WINDOW (m_cocoa)->draw_data);
- [[[m_cocoa->priv->internal_win_id contentView] openGLContext] flushBuffer];
- }
-}
-
-- (void) sendToApp {
- if (m_callback)
- m_callback (m_data);
-}
-
-- (void) setWindow {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSView *view = [m_cocoa->priv->internal_win_id contentView];
-
- [m_cocoa->priv->internal_win_id orderOut:m_cocoa->priv->internal_win_id];
-
- [m_cocoa->priv->external_view addSubview: view];
-
- [view setFrame: [m_cocoa->priv->external_view bounds]];
- [view setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable];
-
- [pool release];
-}
-
-- (void) stopApp {
-#ifdef GNUSTEP
- NSAutoreleasePool *pool = nil;
-#endif
-
- m_cocoa->priv->running = FALSE;
- if (m_callback)
- m_callback (m_data);
-
-#ifdef GNUSTEP
- pool = [[NSAutoreleasePool alloc] init];
- if ([NSApp isRunning])
- [NSApp stop:self];
- [pool release];
-#endif
-}
-
-- (void) closeWindow {
- GstGLWindow *window;
-
- window = GST_GL_WINDOW (m_cocoa);
-
- [m_cocoa->priv->internal_win_id setClosed];
- if (window->close) {
- window->close (window->close_data);
- }
-}
-
-- (void) orderFront {
- [m_cocoa->priv->internal_win_id orderFrontRegardless];
-}
-
-@end
diff --git a/gst-libs/gst/gl/gstglapi.h b/gst-libs/gst/gl/gstglapi.h
index b136662..798eeba 100644
--- a/gst-libs/gst/gl/gstglapi.h
+++ b/gst-libs/gst/gl/gstglapi.h
@@ -71,6 +71,10 @@
# ifdef __APPLE__
# include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
+# include <OpenGL/gl3.h>
+# endif
# include <OpenGL/glu.h>
# else
# include <GL/gl.h>
diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
index 87e04aa..2c76694 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.c
+++ b/gst-libs/gst/gl/gstglcolorconvert.c
@@ -237,15 +237,39 @@
"#endif\n"
"varying vec2 v_texcoord;\n"
"uniform sampler2D tex;\n"
- "uniform float w, h;\n"
+ "uniform float width;\n"
+ "uniform float height;\n"
+ "uniform vec2 chroma_sampling;\n"
RGB_TO_YUV_COEFFICIENTS
"void main(void) {\n"
" float y, u, v;\n"
+ " vec4 uv_texel;\n"
" vec4 texel = texture2D(tex, v_texcoord).%c%c%c%c;\n"
- " vec4 texel2 = texture2D(tex, v_texcoord * 2.0).%c%c%c%c;\n"
+ /* One u and v sample can be generated by a nxm sized block given by
+ * @chroma_sampling. The result is the average of all the values in the
+ * block computed with a rolling average.
+ */
+ " vec2 size = vec2(width, height);\n"
+ " vec2 pos = v_texcoord * size;\n"
+ /* scale for chroma size */
+ " vec2 chroma_pos = v_texcoord * chroma_sampling * size;\n"
+ /* offset chroma to the center of the first texel in the block */
+ " chroma_pos -= clamp(chroma_sampling * 0.5 - 0.5, vec2(0.0), chroma_sampling);\n"
+ " if (chroma_pos.x < width && chroma_pos.y < height) {\n"
+ " for (int i = 0; i < int(chroma_sampling.x); i++) {\n"
+ " vec2 delta = vec2 (float(i), 0.0);\n"
+ " 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) / size).%c%c%c%c;\n"
+ /* rolling average */
+ " uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n"
+ " }\n"
+ " }\n"
+ " }\n"
" y = dot(texel.rgb, coeff1);\n"
- " u = dot(texel2.rgb, coeff2);\n"
- " v = dot(texel2.rgb, coeff3);\n"
+ " u = dot(uv_texel.rgb, coeff2);\n"
+ " v = dot(uv_texel.rgb, coeff3);\n"
" y += offset.x;\n"
" u += offset.y;\n"
" v += offset.z;\n"
@@ -326,25 +350,33 @@
"void main(void) {\n"
" vec4 texel1, texel2;\n"
" vec2 texel3;\n"
- " float fx, fy, y1, y2, u, v;\n"
- " fx = v_texcoord.x;\n"
- " fy = v_texcoord.y;\n"
+ " float fx, dx, fy, y, u, u1, u2, v, v1, v2;\n"
" float inorder = mod (v_texcoord.x * width, 2.0);\n"
- " texel1 = texture2D(tex, vec2(fx, fy)).%c%c%c%c;\n"
- " texel2 = texture2D(tex, vec2(fx+1.0 / width, fy)).%c%c%c%c;\n"
- " y1 = dot(texel1.rgb, coeff1);\n"
- " y2 = dot(texel2.rgb, coeff1);\n"
- " u = dot(texel1.rgb, coeff2);\n"
- " v = dot(texel1.rgb, coeff3);\n"
- " y1 += offset.x;\n"
- " y2 += offset.x;\n"
- " u += offset.y;\n"
- " v += offset.z;\n"
+ " fx = v_texcoord.x;\n"
+ " dx = 1.0 / width;\n"
+ " if (v_texcoord.x >= (1.0 - 0.5 * dx) || (v_texcoord.x > 0.5 * dx && inorder < 1.0)) {\n"
+ " dx = -dx;\n"
+ " }\n"
+ " fy = v_texcoord.y;\n"
+ " texel1 = texture2D(tex, vec2(fx, fy)).%c%c%c%c;\n"
+ " texel2 = texture2D(tex, vec2(fx + dx, fy)).%c%c%c%c;\n"
+ " y = dot(texel1.rgb, coeff1);\n"
+ " u1 = dot(texel1.rgb, coeff2);\n"
+ " u2 = dot(texel2.rgb, coeff2);\n"
+ " v1 = dot(texel1.rgb, coeff3);\n"
+ " v2 = dot(texel2.rgb, coeff3);\n"
+ " y += offset.x;\n"
+ " u1 += offset.y;\n"
+ " u2 += offset.y;\n"
+ " v1 += offset.z;\n"
+ " v2 += offset.z;\n"
+ " u = (u1 + u2) / 2.0;\n"
+ " v = (v1 + v2) / 2.0;\n"
" if (inorder < 1.0) {\n"
- " texel3.r = %s;\n"
+ " texel3.r =%s;\n"
" texel3.g = %s;\n"
" } else {\n"
- " texel3.r = %s;\n"
+ " texel3.r =%s;\n"
" texel3.g = %s;\n"
" }\n"
" gl_FragColor = vec4(texel3.r, texel3.g, 0.0, 0.0);\n"
@@ -372,6 +404,7 @@
gfloat *cms_coeff1; /* r,y */
gfloat *cms_coeff2; /* g,u */
gfloat *cms_coeff3; /* b,v */
+ gfloat chroma_sampling[2];
};
struct _GstGLColorConvertPrivate
@@ -410,6 +443,8 @@
gst_gl_color_convert_init (GstGLColorConvert * convert)
{
convert->priv = GST_GL_COLOR_CONVERT_GET_PRIVATE (convert);
+
+ gst_gl_color_convert_reset (convert);
}
/**
@@ -469,6 +504,9 @@
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->shader) {
gst_object_unref (convert->shader);
convert->shader = NULL;
@@ -673,8 +711,17 @@
info->in_n_textures = 1;
info->out_n_textures = 1;
- if (_is_RGBx (in_format))
- alpha = g_strdup_printf ("t.%c = 1.0;", pixel_order[3]);
+ if (_is_RGBx (in_format)) {
+ int i;
+ char input_alpha_channel = 'a';
+ for (i = 0; i < GST_VIDEO_MAX_PLANES; i++) {
+ if (in_format_str[i] == 'X' || in_format_str[i] == 'x') {
+ input_alpha_channel = _index_to_shader_swizzle (i);
+ break;
+ }
+ }
+ alpha = g_strdup_printf ("t.%c = 1.0;", input_alpha_channel);
+ }
info->frag_prog = g_strdup_printf (frag_REORDER, alpha ? alpha : "",
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
info->shader_tex_names[0] = "tex";
@@ -793,6 +840,7 @@
struct ConvertInfo *info = &convert->priv->convert_info;
GstVideoFormat in_format = GST_VIDEO_INFO_FORMAT (&convert->in_info);
const gchar *in_format_str = gst_video_format_to_string (in_format);
+ GstVideoFormat out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
gchar *pixel_order = _RGB_pixel_order (in_format_str, "rgba");
const gchar *alpha;
@@ -801,7 +849,7 @@
info->shader_tex_names[0] = "tex";
- switch (GST_VIDEO_INFO_FORMAT (&convert->out_info)) {
+ switch (out_format) {
case GST_VIDEO_FORMAT_AYUV:
alpha = _is_RGBx (in_format) ? "1.0" : "texel.a";
info->frag_prog = g_strdup_printf (frag_RGB_to_AYUV, pixel_order[0],
@@ -817,19 +865,30 @@
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3],
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
info->out_n_textures = 3;
+ if (out_format == GST_VIDEO_FORMAT_Y444) {
+ info->chroma_sampling[0] = info->chroma_sampling[1] = 1.0f;
+ } else if (out_format == GST_VIDEO_FORMAT_Y42B) {
+ info->chroma_sampling[0] = 2.0f;
+ info->chroma_sampling[1] = 1.0f;
+ } else if (out_format == GST_VIDEO_FORMAT_Y41B) {
+ info->chroma_sampling[0] = 4.0f;
+ info->chroma_sampling[1] = 1.0f;
+ } else {
+ info->chroma_sampling[0] = info->chroma_sampling[1] = 2.0f;
+ }
break;
case GST_VIDEO_FORMAT_YUY2:
info->frag_prog = g_strdup_printf (frag_RGB_to_YUY2_UYVY,
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3],
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3],
- "y1", "u", "y2", "v");
+ "y", "u", "y", "v");
info->out_n_textures = 1;
break;
case GST_VIDEO_FORMAT_UYVY:
info->frag_prog = g_strdup_printf (frag_RGB_to_YUY2_UYVY,
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3],
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3],
- "u", "y1", "v", "y2");
+ "u", "y", "v", "y");
info->out_n_textures = 1;
break;
default:
@@ -1036,6 +1095,13 @@
gst_gl_shader_set_uniform_1f (convert->shader, "width",
GST_VIDEO_INFO_WIDTH (&convert->in_info));
+ gst_gl_shader_set_uniform_1f (convert->shader, "height",
+ GST_VIDEO_INFO_HEIGHT (&convert->in_info));
+
+ if (info->chroma_sampling[0] > 0.0f && info->chroma_sampling[1] > 0.0f) {
+ gst_gl_shader_set_uniform_2fv (convert->shader, "chroma_sampling", 1,
+ info->chroma_sampling);
+ }
gst_gl_context_clear_shader (convert->context);
@@ -1191,11 +1257,14 @@
convert->priv->in_tex[i] =
(GstGLMemory *) gst_buffer_peek_memory (convert->inbuf, i);
if (!gst_is_gl_memory ((GstMemory *) convert->priv->in_tex[i])) {
+ GST_ERROR_OBJECT (convert, "input must be GstGLMemory");
res = FALSE;
goto out;
}
if (!gst_memory_map ((GstMemory *) convert->priv->in_tex[i], &in_info[i],
GST_MAP_READ | GST_MAP_GL)) {
+ GST_ERROR_OBJECT (convert, "failed to map input memory %p",
+ convert->priv->in_tex[i]);
res = FALSE;
goto out;
}
@@ -1205,6 +1274,7 @@
GstGLMemory *out_tex =
(GstGLMemory *) gst_buffer_peek_memory (convert->outbuf, j);
if (!gst_is_gl_memory ((GstMemory *) out_tex)) {
+ GST_ERROR_OBJECT (convert, "output must be GstGLMemory");
res = FALSE;
goto out;
}
@@ -1225,6 +1295,8 @@
if (!gst_memory_map ((GstMemory *) convert->priv->out_tex[j], &out_info[j],
GST_MAP_WRITE | GST_MAP_GL)) {
+ GST_ERROR_OBJECT (convert, "failed to map output memory %p",
+ convert->priv->out_tex[i]);
res = FALSE;
goto out;
}
diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c
index 82d468b..a197bf1 100644
--- a/gst-libs/gst/gl/gstglcontext.c
+++ b/gst-libs/gst/gl/gstglcontext.c
@@ -138,6 +138,7 @@
GstGLDisplay *display;
GThread *gl_thread;
+ GThread *active_thread;
/* conditions */
GMutex render_lock;
@@ -147,7 +148,7 @@
gboolean created;
gboolean alive;
- GstGLContext *other_context;
+ GWeakRef other_context_ref;
GError **error;
gint gl_major;
@@ -215,6 +216,8 @@
g_cond_init (&context->priv->create_cond);
g_cond_init (&context->priv->destroy_cond);
context->priv->created = FALSE;
+
+ g_weak_ref_init (&context->priv->other_context_ref, NULL);
}
static void
@@ -249,6 +252,8 @@
* Create a new #GstGLContext with the specified @display
*
* Returns: a new #GstGLContext
+ *
+ * Since: 1.4
*/
GstGLContext *
gst_gl_context_new (GstGLDisplay * display)
@@ -305,6 +310,8 @@
* Wraps an existing OpenGL context into a #GstGLContext.
*
* Returns: a #GstGLContext wrapping @handle
+ *
+ * Since: 1.4
*/
GstGLContext *
gst_gl_context_new_wrapped (GstGLDisplay * display, guintptr handle,
@@ -379,6 +386,7 @@
g_cond_clear (&context->priv->create_cond);
g_free (context->priv->gl_exts);
+ g_weak_ref_clear (&context->priv->other_context_ref);
G_OBJECT_CLASS (gst_gl_context_parent_class)->finalize (object);
}
@@ -394,6 +402,8 @@
* currently set window. See gst_gl_context_set_window() for details.
*
* Returns: Whether the activation succeeded
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_context_activate (GstGLContext * context, gboolean activate)
@@ -405,12 +415,39 @@
context_class = GST_GL_CONTEXT_GET_CLASS (context);
g_return_val_if_fail (context_class->activate != NULL, FALSE);
+ GST_OBJECT_LOCK (context);
result = context_class->activate (context, activate);
+ context->priv->active_thread = result
+ && activate ? context->priv->gl_thread : NULL;
+ GST_OBJECT_UNLOCK (context);
+
return result;
}
/**
+ * gst_gl_context_get_thread:
+ * @context: a #GstGLContext
+ *
+ * Returns: (transfer full): The #GThread, @context is current in or NULL
+ *
+ * Since: 1.4.5
+ */
+GThread *
+gst_gl_context_get_thread (GstGLContext * context)
+{
+ GThread *ret;
+
+ GST_OBJECT_LOCK (context);
+ ret = context->priv->active_thread;
+ if (ret)
+ g_thread_ref (ret);
+ GST_OBJECT_UNLOCK (context);
+
+ return ret;
+}
+
+/**
* gst_gl_context_get_gl_api:
* @context: a #GstGLContext
*
@@ -419,7 +456,9 @@
* The currently available API may be limited by the #GstGLDisplay in use and/or
* the #GstGLWindow chosen.
*
- * Returns: the currently available OpenGL api
+ * Returns: the available OpenGL api
+ *
+ * Since: 1.4
*/
GstGLAPI
gst_gl_context_get_gl_api (GstGLContext * context)
@@ -445,6 +484,8 @@
* be retreived using this method.
*
* Returns: a function pointer or NULL
+ *
+ * Since: 1.4
*/
gpointer
gst_gl_context_get_proc_address (GstGLContext * context, const gchar * name)
@@ -503,6 +544,8 @@
* already running.
*
* Returns: Whether the window was successfully updated
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_context_set_window (GstGLContext * context, GstGLWindow * window)
@@ -533,6 +576,8 @@
* @context: a #GstGLContext
*
* Returns: the currently set window
+ *
+ * Since: 1.4
*/
GstGLWindow *
gst_gl_context_get_window (GstGLContext * context)
@@ -547,6 +592,73 @@
return gst_object_ref (context->window);
}
+static gboolean
+_share_group_descendant (GstGLContext * context, GstGLContext * other_context,
+ GstGLContext ** root)
+{
+ GstGLContext *next = gst_object_ref (context);
+ GstGLContext *prev = NULL;
+
+ /* given a context tree where --> means "has other gl context":
+ *
+ * a-->b-->c-->d
+ * / /
+ * e /
+ * /
+ * f-->g
+ *
+ * return TRUE if @other_context is a descendant of @context
+ *
+ * e.g. [a, b], [f, d], [e, c] are all descendants
+ * but [b, a], [d, f], [e, f] are not descendants. Provide the root node (d)
+ * so that we can check if two chains end up at the end with the same
+ * GstGLContext
+ */
+
+ while (next != NULL) {
+ if (next == other_context) {
+ gst_object_unref (next);
+ if (root)
+ *root = NULL;
+ return TRUE;
+ }
+
+ prev = next;
+ next = g_weak_ref_get (&next->priv->other_context_ref);
+ gst_object_unref (prev);
+ }
+
+ if (root != NULL)
+ *root = prev;
+
+ return FALSE;
+}
+
+/**
+ * gst_gl_context_can_share:
+ * @context: a #GstGLContext
+ * @other_context: another #GstGLContext
+ *
+ * Returns: whether @context and @other_context are able to share OpenGL
+ * resources.
+ *
+ * Since: 1.6
+ */
+gboolean
+gst_gl_context_can_share (GstGLContext * context, GstGLContext * other_context)
+{
+ GstGLContext *root1, *root2;
+
+ g_return_val_if_fail (GST_GL_IS_CONTEXT (context), FALSE);
+ g_return_val_if_fail (GST_GL_IS_CONTEXT (other_context), FALSE);
+
+ /* check if the contexts are descendants or the root nodes are the same */
+ return context == other_context
+ || _share_group_descendant (context, other_context, &root1)
+ || _share_group_descendant (other_context, context, &root2)
+ || ((root1 != NULL || root2 != NULL) && root1 == root2);
+}
+
/**
* gst_gl_context_create:
* @context: a #GstGLContext:
@@ -563,6 +675,8 @@
* Should only be called once.
*
* Returns: whether the context could successfully be created
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_context_create (GstGLContext * context,
@@ -577,7 +691,7 @@
g_mutex_lock (&context->priv->render_lock);
if (!context->priv->created) {
- context->priv->other_context = other_context;
+ g_weak_ref_set (&context->priv->other_context_ref, other_context);
context->priv->error = error;
context->priv->gl_thread = g_thread_new ("gstglcontext",
@@ -711,7 +825,7 @@
g_mutex_lock (&context->priv->render_lock);
error = context->priv->error;
- other_context = context->priv->other_context;
+ other_context = g_weak_ref_get (&context->priv->other_context_ref);
context_class = GST_GL_CONTEXT_GET_CLASS (context);
window_class = GST_GL_WINDOW_GET_CLASS (context->window);
@@ -871,6 +985,9 @@
failure:
{
+ if (other_context)
+ gst_object_unref (other_context);
+
g_cond_signal (&context->priv->create_cond);
g_mutex_unlock (&context->priv->render_lock);
return NULL;
@@ -884,6 +1001,8 @@
* Gets the backing OpenGL context used by @context.
*
* Returns: The platform specific backing OpenGL context
+ *
+ * Since: 1.4
*/
guintptr
gst_gl_context_get_gl_context (GstGLContext * context)
@@ -907,6 +1026,8 @@
* Gets the OpenGL platform that used by @context.
*
* Returns: The platform specific backing OpenGL context
+ *
+ * Since: 1.4
*/
GstGLPlatform
gst_gl_context_get_gl_platform (GstGLContext * context)
@@ -925,6 +1046,8 @@
* @context: a #GstGLContext:
*
* Returns: the #GstGLDisplay associated with this @context
+ *
+ * Since: 1.4
*/
GstGLDisplay *
gst_gl_context_get_display (GstGLContext * context)
@@ -958,6 +1081,8 @@
* Execute @func in the OpenGL thread of @context with @data
*
* MT-safe
+ *
+ * Since: 1.4
*/
void
gst_gl_context_thread_add (GstGLContext * context,
@@ -991,6 +1116,8 @@
* Returns the OpenGL version implemented by @context. See
* gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by
* @context.
+ *
+ * Since: 1.4
*/
void
gst_gl_context_get_gl_version (GstGLContext * context, gint * maj, gint * min)
@@ -1014,6 +1141,8 @@
*
* Returns: whether OpenGL context implements the required api and specified
* version.
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_context_check_gl_version (GstGLContext * context, GstGLAPI api,
@@ -1045,6 +1174,8 @@
* determine their existence and so will fail if that is not the case.
*
* Returns: Whether @feature is supported by @context
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_context_check_feature (GstGLContext * context, const gchar * feature)
diff --git a/gst-libs/gst/gl/gstglcontext.h b/gst-libs/gst/gl/gstglcontext.h
index 999b86a..7d6a842 100644
--- a/gst-libs/gst/gl/gstglcontext.h
+++ b/gst-libs/gst/gl/gstglcontext.h
@@ -120,12 +120,14 @@
GstGLAPI available_apis);
gboolean gst_gl_context_activate (GstGLContext *context, gboolean activate);
+GThread * gst_gl_context_get_thread (GstGLContext *context);
GstGLDisplay * gst_gl_context_get_display (GstGLContext *context);
gpointer gst_gl_context_get_proc_address (GstGLContext *context, const gchar *name);
GstGLPlatform gst_gl_context_get_gl_platform (GstGLContext *context);
GstGLAPI gst_gl_context_get_gl_api (GstGLContext *context);
guintptr gst_gl_context_get_gl_context (GstGLContext *context);
+gboolean gst_gl_context_can_share (GstGLContext * context, GstGLContext *other_context);
gboolean gst_gl_context_create (GstGLContext *context, GstGLContext *other_context, GError ** error);
diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
index c57e924..6b7b835 100644
--- a/gst-libs/gst/gl/gstgldisplay.c
+++ b/gst-libs/gst/gl/gstgldisplay.c
@@ -124,6 +124,8 @@
* gst_gl_display_new:
*
* Returns: (transfer full): a new #GstGLDisplay
+ *
+ * Since: 1.4
*/
GstGLDisplay *
gst_gl_display_new (void)
@@ -195,6 +197,8 @@
* @display: a #GstGLDisplay
*
* Returns: the #GstGLDisplayType of @display
+ *
+ * Since: 1.4
*/
GstGLDisplayType
gst_gl_display_get_handle_type (GstGLDisplay * display)
@@ -210,6 +214,8 @@
* @display: resulting #GstGLDisplay
*
* Sets @display on @context
+ *
+ * Since: 1.4
*/
void
gst_context_set_gl_display (GstContext * context, GstGLDisplay * display)
@@ -232,6 +238,8 @@
* @display: resulting #GstGLDisplay
*
* Returns: Whether @display was in @context
+ *
+ * Since: 1.4
*/
gboolean
gst_context_get_gl_display (GstContext * context, GstGLDisplay ** display)
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index e8c8710..26bf3f9 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -245,6 +245,8 @@
{
GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+ gst_caps_replace (&filter->out_caps, NULL);
+
if (filter->upload) {
gst_object_unref (filter->upload);
filter->upload = NULL;
@@ -823,6 +825,8 @@
goto error;
}
+ gst_caps_replace (&filter->out_caps, outcaps);
+
GST_DEBUG ("set_caps %dx%d", GST_VIDEO_INFO_WIDTH (&filter->out_info),
GST_VIDEO_INFO_HEIGHT (&filter->out_info));
@@ -905,6 +909,10 @@
if (decide_pool && GST_IS_GL_BUFFER_POOL (decide_pool)
&& gst_caps_is_equal_fixed (decide_caps, caps)) {
+ config = gst_buffer_pool_get_config (pool);
+ gst_buffer_pool_config_get_params (config, NULL, &size, NULL, NULL);
+ gst_structure_free (config);
+
pool = decide_pool;
} else {
GST_DEBUG_OBJECT (filter, "create new pool");
@@ -1170,24 +1178,29 @@
GstGLFilterClass *filter_class;
guint in_tex, out_tex;
GstVideoFrame out_frame;
- gboolean ret, out_gl_mem;
- GstVideoGLTextureUploadMeta *out_tex_upload_meta;
+ gboolean ret;
+ gboolean to_download =
+ gst_caps_features_is_equal (GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY,
+ gst_caps_get_features (filter->out_caps, 0));
+ GstMapFlags out_map_flags = GST_MAP_WRITE;
filter_class = GST_GL_FILTER_GET_CLASS (filter);
if (!gst_gl_upload_perform_with_buffer (filter->upload, inbuf, &in_tex))
return FALSE;
+ to_download |= !gst_is_gl_memory (gst_buffer_peek_memory (outbuf, 0));
+
+ if (!to_download)
+ out_map_flags |= GST_MAP_GL;
+
if (!gst_video_frame_map (&out_frame, &filter->out_info, outbuf,
- GST_MAP_WRITE | GST_MAP_GL)) {
+ out_map_flags)) {
ret = FALSE;
goto inbuf_error;
}
- out_gl_mem = gst_is_gl_memory (out_frame.map[0].memory);
- out_tex_upload_meta = gst_buffer_get_video_gl_texture_upload_meta (outbuf);
-
- if (out_gl_mem) {
+ if (!to_download) {
out_tex = *(guint *) out_frame.data[0];
} else {
GST_LOG ("Output Buffer does not contain correct memory, "
@@ -1197,6 +1210,7 @@
filter->download = gst_gl_download_new (filter->context);
gst_gl_download_set_format (filter->download, &out_frame.info);
+
out_tex = filter->out_tex_id;
}
@@ -1206,7 +1220,7 @@
g_assert (filter_class->filter_texture);
ret = filter_class->filter_texture (filter, in_tex, out_tex);
- if (!out_gl_mem && !out_tex_upload_meta) {
+ if (to_download) {
if (!gst_gl_download_perform_with_data (filter->download, out_tex,
out_frame.data)) {
GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND,
diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h
index 6e77022..c786493 100644
--- a/gst-libs/gst/gl/gstglfilter.h
+++ b/gst-libs/gst/gl/gstglfilter.h
@@ -68,6 +68,9 @@
GstVideoInfo in_info;
GstVideoInfo out_info;
+
+ GstCaps *out_caps;
+
GLuint fbo;
GLuint depthbuffer;
diff --git a/gst-libs/gst/gl/gstglmemory.c b/gst-libs/gst/gl/gstglmemory.c
index 64314e6..87d57cb 100644
--- a/gst-libs/gst/gl/gstglmemory.c
+++ b/gst-libs/gst/gl/gstglmemory.c
@@ -661,8 +661,10 @@
if ((gl_mem->map_flags & GST_MAP_WRITE) == GST_MAP_WRITE) {
if ((gl_mem->map_flags & GST_MAP_GL) == GST_MAP_GL) {
GST_GL_MEMORY_FLAG_SET (gl_mem, GST_GL_MEMORY_FLAG_NEED_DOWNLOAD);
+ GST_GL_MEMORY_FLAG_UNSET (gl_mem, GST_GL_MEMORY_FLAG_NEED_UPLOAD);
} else {
GST_GL_MEMORY_FLAG_SET (gl_mem, GST_GL_MEMORY_FLAG_NEED_UPLOAD);
+ GST_GL_MEMORY_FLAG_UNSET (gl_mem, GST_GL_MEMORY_FLAG_NEED_DOWNLOAD);
}
}
diff --git a/gst-libs/gst/gl/gstglshadervariables.c b/gst-libs/gst/gl/gstglshadervariables.c
index 325a71f..4ca2efe 100644
--- a/gst-libs/gst/gl/gstglshadervariables.c
+++ b/gst-libs/gst/gl/gstglshadervariables.c
@@ -254,12 +254,12 @@
trimright (t, " \t");
if (arraysize) {
- char *s = g_malloc (strlen (vartype) + 32);
- sprintf (s, "%s[%d]", vartype, arraysize);
+ gchar *s = g_strdup_printf ("%s[%d]", vartype, arraysize);
if (strcmp (t, s)) {
g_free (s);
goto parse_error;
}
+ g_free (s);
} else {
if (strcmp (t, vartype))
goto parse_error;
diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
index 133fdd5..ecf6ebb 100644
--- a/gst-libs/gst/gl/gstglupload.c
+++ b/gst-libs/gst/gl/gstglupload.c
@@ -250,6 +250,11 @@
mem = gst_buffer_peek_memory (buffer, 0);
if (gst_is_gl_memory (mem)) {
+ GstGLMemory *gl_mem = (GstGLMemory *) gst_buffer_peek_memory (buffer, 0);
+
+ if (!gst_gl_context_can_share (upload->context, gl_mem->context))
+ goto raw_data_upload;
+
if (GST_VIDEO_INFO_FORMAT (&upload->in_info) == GST_VIDEO_FORMAT_RGBA) {
GstMapInfo map_info;
@@ -302,6 +307,7 @@
}
}
+raw_data_upload:
GST_LOG_OBJECT (upload, "Attempting upload with raw data");
/* GstVideoMeta map */
if (!gst_video_frame_map (&upload->priv->frame, &upload->in_info, buffer,
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index 117cfa6..a35ca05 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -138,6 +138,8 @@
* @display: a #GstGLDisplay
*
* Returns: (transfer full): a new #GstGLWindow using @display's connection
+ *
+ * Since: 1.4
*/
GstGLWindow *
gst_gl_window_new (GstGLDisplay * display)
@@ -218,6 +220,8 @@
*
* Sets the window that this @window should render into. Some implementations
* require this to be called with a valid handle before drawing can commence.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_set_window_handle (GstGLWindow * window, guintptr handle)
@@ -239,6 +243,8 @@
* @height: requested height of the window
*
* Redraw the window contents. Implementations should invoke the draw callback.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_draw_unlocked (GstGLWindow * window, guint width, guint height)
@@ -259,6 +265,8 @@
* @height: requested height of the window
*
* Redraw the window contents. Implementations should invoke the draw callback.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_draw (GstGLWindow * window, guint width, guint height)
@@ -282,6 +290,8 @@
* @window: a #GstGLWindow
*
* Start the execution of the runloop.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_run (GstGLWindow * window)
@@ -301,6 +311,8 @@
* @window: a #GstGLWindow
*
* Quit the runloop's execution.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_quit (GstGLWindow * window)
@@ -379,6 +391,8 @@
*
* Invoke @callback with data on the window thread. @callback is guarenteed to
* have executed when this function returns.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
@@ -403,6 +417,8 @@
*
* Invoke @callback with @data on the window thread. The callback may not
* have been executed when this function returns.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_send_message_async (GstGLWindow * window, GstGLWindowCB callback,
@@ -426,6 +442,8 @@
* @destroy_notify: (destroy): called when @data is not needed any more
*
* Sets the draw callback called everytime gst_gl_window_draw() is called
+ *
+ * Since: 1.4
*/
void
gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
@@ -453,6 +471,8 @@
* @destroy_notify: (destroy): called when @data is not needed any more
*
* Sets the resize callback called everytime a resize of the window occurs.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_set_resize_callback (GstGLWindow * window,
@@ -480,6 +500,8 @@
* @destroy_notify: (destroy): called when @data is not needed any more
*
* Sets the callback called when the window is about to close.
+ *
+ * Since: 1.4
*/
void
gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
@@ -504,6 +526,8 @@
* @window: a #GstGLWindow
*
* Whether the runloop is running
+ *
+ * Since: 1.4
*/
gboolean
gst_gl_window_is_running (GstGLWindow * window)
@@ -516,6 +540,8 @@
* @window: a #GstGLWindow
*
* Returns: the windowing system display handle for this @window
+ *
+ * Since: 1.4
*/
guintptr
gst_gl_window_get_display (GstGLWindow * window)
@@ -534,6 +560,8 @@
* @window: a #GstGLWindow
*
* Returns: the window handle we are currently rendering into
+ *
+ * Since: 1.4
*/
guintptr
gst_gl_window_get_window_handle (GstGLWindow * window)
@@ -552,6 +580,8 @@
* @window: a #GstGLWindow
*
* Returns: (transfer full): the #GstGLContext associated with this @window
+ *
+ * Since: 1.4
*/
GstGLContext *
gst_gl_window_get_context (GstGLWindow * window)
diff --git a/gst-libs/gst/video/bad-video-orc-dist.c b/gst-libs/gst/video/bad-video-orc-dist.c
index d60b72e..168359f 100644
--- a/gst-libs/gst/video/bad-video-orc-dist.c
+++ b/gst-libs/gst/video/bad-video-orc-dist.c
@@ -336,7 +336,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 31, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 109, 101, 109, 99, 112,
- 121,
+ 121,
95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4, 2, 0,
};
p = orc_program_new_from_static_bytecode (bc);
@@ -557,7 +557,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4, 4, 11, 4, 4,
12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32,
6, 7, 21, 1, 196, 0, 32, 4, 21, 1, 196, 1, 32, 5, 2, 0,
@@ -790,7 +790,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4, 4, 11, 4, 4,
12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32,
6, 7, 21, 1, 196, 0, 4, 32, 21, 1, 196, 1, 5, 32, 2, 0,
@@ -1059,7 +1059,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4, 4, 11, 4, 4,
12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0,
0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7,
@@ -1315,7 +1315,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2,
11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2,
20, 2, 21, 1, 199, 32, 34, 4, 97, 0, 34, 21, 1, 199, 33, 34,
@@ -1458,7 +1458,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11, 4, 4, 12, 4,
4, 21, 1, 183, 0, 4, 2, 0,
};
@@ -1602,7 +1602,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, 52, 50, 50, 11,
1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42, 1, 4, 2, 0,
@@ -1740,7 +1740,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, 52, 52, 52, 11,
2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32,
97, 1, 32, 2, 0,
@@ -1871,7 +1871,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, 52, 52, 52, 11,
2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32, 2, 0,
};
@@ -2014,7 +2014,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 50, 11,
1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33, 4, 39, 0, 32,
33, 2, 0,
@@ -2183,7 +2183,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 48, 11,
1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1, 20, 1, 21, 1,
39, 32, 4, 5, 199, 33, 34, 32, 39, 0, 33, 34, 2, 0,
@@ -2328,7 +2328,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 43, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97,
- 114,
+ 114,
95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, 52, 50, 48, 11,
1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5, 2, 0,
};
@@ -2564,7 +2564,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4,
4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21,
1, 199, 33, 32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21,
@@ -2810,7 +2810,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4,
4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21,
1, 199, 32, 33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21,
@@ -3006,7 +3006,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1,
1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, 32, 0, 4, 199,
2, 1, 32, 2, 0,
@@ -3199,7 +3199,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1,
1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, 0, 32, 4, 199,
2, 1, 32, 2, 0,
@@ -3404,7 +3404,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2,
2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199,
32, 0, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
@@ -3615,7 +3615,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2,
2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199,
0, 32, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
@@ -3863,7 +3863,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2,
11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2,
20, 2, 21, 1, 199, 34, 32, 4, 97, 0, 34, 21, 1, 199, 34, 33,
@@ -4244,7 +4244,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2,
2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8, 8, 20, 4, 20,
4, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198,
@@ -4514,7 +4514,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8,
8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35,
4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35,
@@ -4756,7 +4756,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8,
8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35,
4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35,
@@ -5008,7 +5008,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1,
1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21,
1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39, 34, 34, 35, 199,
@@ -5213,7 +5213,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1,
1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199,
2, 1, 33, 189, 0, 32, 2, 0,
@@ -5409,7 +5409,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2,
2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196,
0, 4, 32, 2, 0,
@@ -5602,7 +5602,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2,
2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196,
0, 32, 4, 2, 0,
@@ -5855,7 +5855,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11, 8, 8, 12, 2,
2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20,
2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195,
@@ -6099,7 +6099,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2,
2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21,
1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21,
@@ -6342,7 +6342,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2,
2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21,
1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21,
@@ -6561,7 +6561,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11, 4, 4, 12, 1,
1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20,
2, 196, 32, 5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
@@ -6978,7 +6978,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4,
4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16,
2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20,
@@ -7458,7 +7458,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4,
4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16,
2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20,
@@ -7938,7 +7938,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4,
4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16,
2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20,
@@ -8418,7 +8418,7 @@
static const orc_uint8 bc[] = {
1, 7, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111,
110, 118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101,
- 114,
+ 114,
116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4,
4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16,
2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20,
@@ -8901,7 +8901,7 @@
static const orc_uint8 bc[] = {
1, 9, 39, 98, 97, 100, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110,
118, 101, 114, 116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114,
- 116,
+ 116,
95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, 4, 12, 1, 1,
12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, 14, 4, 127, 0,
0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, 2,
diff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c
index 02e485c..5d2e3f0 100644
--- a/gst-libs/gst/video/gstvideoaggregator.c
+++ b/gst-libs/gst/video/gstvideoaggregator.c
@@ -1056,6 +1056,9 @@
converted_buf, GST_MAP_READWRITE)) {
GST_WARNING_OBJECT (vagg, "Could not map converted frame");
+ g_slice_free (GstVideoFrame, converted_frame);
+ gst_video_frame_unmap (frame);
+ g_slice_free (GstVideoFrame, frame);
return FALSE;
}
@@ -1063,6 +1066,7 @@
frame);
pad->converted_buffer = converted_buf;
gst_video_frame_unmap (frame);
+ g_slice_free (GstVideoFrame, frame);
} else {
converted_frame = frame;
converted_buf = pad->buffer;
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index 90a3db5..f7ec8a6 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@
<release>
<Version>
+ <revision>1.4.4</revision>
+ <branch>1.4</branch>
+ <name></name>
+ <created>2014-11-06</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.4.4.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.4.3</revision>
<branch>1.4</branch>
<name></name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index a42d9ec..8179ece 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.4.3
+Version: 1.4.4
Release: 1.gst
# The freeze and nfs plugins are LGPLv2 (only)
License: LGPLv2+ and LGPLv2
diff --git a/gst/bayer/gstbayerorc-dist.c b/gst/bayer/gstbayerorc-dist.c
index 1dc708d..2165615 100644
--- a/gst/bayer/gstbayerorc-dist.c
+++ b/gst/bayer/gstbayerorc-dist.c
@@ -336,7 +336,7 @@
static const orc_uint8 bc[] = {
1, 9, 34, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114,
105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 117, 110, 97,
- 108,
+ 108,
105, 103, 110, 101, 100, 11, 2, 2, 11, 2, 2, 12, 2, 2, 14, 4,
1, 0, 0, 0, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 199, 34,
33, 4, 83, 32, 4, 16, 199, 36, 35, 32, 39, 36, 34, 36, 196, 0,
diff --git a/gst/fieldanalysis/gstfieldanalysisorc-dist.c b/gst/fieldanalysis/gstfieldanalysisorc-dist.c
index 06951b7..f50df64 100644
--- a/gst/fieldanalysis/gstfieldanalysisorc-dist.c
+++ b/gst/fieldanalysis/gstfieldanalysisorc-dist.c
@@ -283,7 +283,7 @@
static const orc_uint8 bc[] = {
1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
- 121,
+ 121,
95, 115, 97, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12,
1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 69, 32, 32, 154, 34,
@@ -466,9 +466,9 @@
static const orc_uint8 bc[] = {
1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
- 121,
+ 121,
95, 115, 115, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118,
- 12,
+ 12,
1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 176, 34, 32, 32, 111,
35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0,
@@ -758,7 +758,7 @@
static const orc_uint8 bc[] = {
1, 9, 46, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
- 121,
+ 121,
95, 51, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117,
118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
12, 1, 1, 13, 4, 14, 4, 2, 0, 0, 0, 16, 4, 20, 2, 20,
@@ -1099,7 +1099,7 @@
static const orc_uint8 bc[] = {
1, 9, 50, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
95, 111, 114, 99, 95, 111, 112, 112, 111, 115, 105, 116, 101, 95, 112,
- 97,
+ 97,
114, 105, 116, 121, 95, 53, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97,
114, 95, 121, 117, 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1,
1, 12, 1, 1, 13, 4, 14, 4, 2, 0, 0, 0, 14, 4, 3, 0,
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 0ca7253..9ec977a 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -1016,15 +1016,6 @@
return TRUE;
}
-static gboolean
-gst_mpegts_base_handle_eos (MpegTSBase * base)
-{
- g_hash_table_foreach_remove (base->programs, (GHRFunc) remove_each_program,
- base);
- /* finally remove */
- return TRUE;
-}
-
static inline GstFlowReturn
mpegts_base_drain (MpegTSBase * base)
{
@@ -1075,10 +1066,6 @@
case GST_EVENT_STREAM_START:
gst_event_unref (event);
break;
- case GST_EVENT_EOS:
- res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event);
- res = gst_mpegts_base_handle_eos (base);
- break;
case GST_EVENT_CAPS:
/* FIXME, do something */
gst_event_unref (event);
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 297f375..9b2debb 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -1850,7 +1850,8 @@
} else {
GST_WARNING ("CONTINUITY: Mismatch packet %d, stream %d",
cc, stream->continuity_counter);
- stream->state = PENDING_PACKET_DISCONT;
+ if (stream->state != PENDING_PACKET_EMPTY)
+ stream->state = PENDING_PACKET_DISCONT;
}
stream->continuity_counter = cc;
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index f807d9e..eff74dc 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -291,7 +291,7 @@
GstRawParse *rp = GST_RAW_PARSE (parent);
GstFlowReturn ret = GST_FLOW_OK;
GstRawParseClass *rp_class = GST_RAW_PARSE_GET_CLASS (rp);
- guint buffersize;
+ guint buffersize, available;
if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))) {
GST_DEBUG_OBJECT (rp, "received DISCONT buffer");
@@ -310,14 +310,15 @@
gst_adapter_push (rp->adapter, buffer);
+ available = gst_adapter_available (rp->adapter);
if (rp_class->multiple_frames_per_buffer) {
- buffersize = gst_adapter_available (rp->adapter);
+ buffersize = available;
buffersize -= buffersize % rp->framesize;
} else {
buffersize = rp->framesize;
}
- while (gst_adapter_available (rp->adapter) >= buffersize) {
+ while (buffersize > 0 && gst_adapter_available (rp->adapter) >= buffersize) {
buffer = gst_adapter_take_buffer (rp->adapter, buffersize);
ret = gst_raw_parse_push_buffer (rp, buffer);
@@ -697,8 +698,6 @@
if (segment.format != GST_FORMAT_TIME) {
gst_event_unref (event);
- segment.format = GST_FORMAT_TIME;
-
ret =
gst_raw_parse_convert (rp, segment.format, segment.start,
GST_FORMAT_TIME, (gint64 *) & segment.start);
@@ -713,6 +712,8 @@
break;
}
+ segment.format = GST_FORMAT_TIME;
+
event = gst_event_new_segment (&segment);
}
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 697ff87..506cd61 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -1337,6 +1337,19 @@
par_n, par_d, NULL);
}
+ /* set profile and level in caps */
+ if (sps) {
+ GstMapInfo map;
+ GstBuffer *sps_buf = h264parse->sps_nals[sps->id];
+
+ if (sps_buf) {
+ gst_buffer_map (sps_buf, &map, GST_MAP_READ);
+ gst_codec_utils_h264_caps_set_level_and_profile (caps,
+ map.data + 1, map.size - 1);
+ gst_buffer_unmap (sps_buf, &map);
+ }
+ }
+
src_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h264parse));
if (src_caps
@@ -1680,6 +1693,15 @@
/* codec tag */
caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (parse));
+ if (caps == NULL) {
+ if (GST_PAD_IS_FLUSHING (GST_BASE_PARSE_SRC_PAD (h264parse))) {
+ GST_INFO_OBJECT (h264parse, "Src pad is flushing");
+ return GST_FLOW_FLUSHING;
+ } else {
+ GST_INFO_OBJECT (h264parse, "Src pad is not negotiated!");
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+ }
gst_pb_utils_add_codec_description_to_tag_list (taglist,
GST_TAG_VIDEO_CODEC, caps);
gst_caps_unref (caps);
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index caf4616..9a98dcc 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -1335,6 +1335,19 @@
par_n, par_d, NULL);
}
+ /* set profile and level in caps */
+ if (sps) {
+ GstMapInfo map;
+ GstBuffer *sps_buf = h265parse->sps_nals[sps->id];
+
+ if (sps_buf) {
+ gst_buffer_map (sps_buf, &map, GST_MAP_READ);
+ gst_codec_utils_h265_caps_set_level_tier_and_profile (caps,
+ map.data + 1, map.size - 1);
+ gst_buffer_unmap (sps_buf, &map);
+ }
+ }
+
src_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h265parse));
if (src_caps
diff --git a/gst/videoparsers/gstvc1parse.c b/gst/videoparsers/gstvc1parse.c
index 54695ec..02e2d0f 100644
--- a/gst/videoparsers/gstvc1parse.c
+++ b/gst/videoparsers/gstvc1parse.c
@@ -115,6 +115,16 @@
"frame-layer", VC1_STREAM_FORMAT_FRAME_LAYER}
};
+static const struct
+{
+ gchar str[5];
+ GstVC1ParseFormat en;
+} parse_formats[] = {
+ {
+ "WMV3", GST_VC1_PARSE_FORMAT_WMV3}, {
+ "WVC1", GST_VC1_PARSE_FORMAT_WVC1}
+};
+
static const gchar *
stream_format_to_string (VC1StreamFormat stream_format)
{
@@ -151,6 +161,12 @@
return -1;
}
+static const gchar *
+parse_format_to_string (GstVC1ParseFormat format)
+{
+ return parse_formats[format].str;
+}
+
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
@@ -300,7 +316,9 @@
static gboolean
gst_vc1_parse_renegotiate (GstVC1Parse * vc1parse)
{
+ GstCaps *in_caps;
GstCaps *allowed_caps;
+ GstCaps *tmp;
/* Negotiate with downstream here */
GST_DEBUG_OBJECT (vc1parse, "Renegotiating");
@@ -314,9 +332,25 @@
GST_DEBUG_OBJECT (vc1parse, "Downstream allowed caps: %" GST_PTR_FORMAT,
allowed_caps);
- allowed_caps = gst_caps_make_writable (allowed_caps);
- allowed_caps = gst_caps_truncate (allowed_caps);
- s = gst_caps_get_structure (allowed_caps, 0);
+ /* Downstream element can have differents caps according to wmv format
+ * so intersect to select the good caps */
+ in_caps = gst_caps_new_simple ("video/x-wmv",
+ "format", G_TYPE_STRING, parse_format_to_string (vc1parse->format),
+ NULL);
+
+ tmp = gst_caps_intersect_full (allowed_caps, in_caps,
+ GST_CAPS_INTERSECT_FIRST);
+ gst_caps_unref (in_caps);
+
+ if (gst_caps_is_empty (tmp)) {
+ GST_ERROR_OBJECT (vc1parse, "Empty caps, downstream doesn't support %s",
+ parse_format_to_string (vc1parse->format));
+ gst_caps_unref (tmp);
+ return FALSE;
+ }
+
+ tmp = gst_caps_make_writable (tmp);
+ s = gst_caps_get_structure (tmp, 0);
/* If already fixed this does nothing */
gst_structure_fixate_field_string (s, "header-format", "asf");
@@ -343,8 +377,10 @@
vc1parse->output_stream_format =
stream_format_from_string (stream_format);
}
+ gst_caps_unref (tmp);
} else if (gst_caps_is_empty (allowed_caps)) {
GST_ERROR_OBJECT (vc1parse, "Empty caps");
+ gst_caps_unref (allowed_caps);
return FALSE;
} else {
GST_DEBUG_OBJECT (vc1parse, "Using input header/stream format");
@@ -862,6 +898,14 @@
return TRUE;
}
+static inline void
+calculate_mb_size (GstVC1SeqHdr * seqhdr, guint width, guint height)
+{
+ seqhdr->mb_width = (width + 15) >> 4;
+ seqhdr->mb_height = (height + 15) >> 4;
+ seqhdr->mb_stride = seqhdr->mb_width + 1;
+}
+
static gboolean
gst_vc1_parse_handle_bdu (GstVC1Parse * vc1parse, GstVC1StartCode startcode,
GstBuffer * buffer, guint offset, guint size)
@@ -1051,7 +1095,7 @@
/* frame-layer or sequence-layer-frame-layer */
g_assert (size >= 8);
/* Parse frame layer size */
- framesize = GST_READ_UINT24_LE (data + 1) + 8;
+ framesize = GST_READ_UINT24_LE (data) + 8;
}
@@ -1172,6 +1216,34 @@
/* Must be a frame or a frame + field */
/* TODO: Check if keyframe */
}
+ } else {
+ /* In simple/main, we basically have a raw frame, so parse it */
+ GstVC1ParserResult pres;
+ GstVC1FrameHdr frame_hdr;
+ GstVC1SeqHdr seq_hdr;
+
+ if (!vc1parse->seq_hdr_buffer) {
+ /* Build seq_hdr from sequence-layer to be able to parse frame */
+ seq_hdr.profile = vc1parse->profile;
+ seq_hdr.struct_c = vc1parse->seq_layer.struct_c;
+ calculate_mb_size (&seq_hdr, vc1parse->seq_layer.struct_a.horiz_size,
+ vc1parse->seq_layer.struct_a.vert_size);
+ } else {
+ seq_hdr = vc1parse->seq_hdr;
+ }
+
+ pres = gst_vc1_parse_frame_header (data, size, &frame_hdr,
+ &seq_hdr, NULL);
+ if (pres != GST_VC1_PARSER_OK) {
+ GST_ERROR_OBJECT (vc1parse, "Invalid VC1 frame header");
+ ret = GST_FLOW_ERROR;
+ goto done;
+ }
+
+ if (frame_hdr.ptype == GST_VC1_PICTURE_TYPE_I)
+ GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
+ else
+ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
}
ret = GST_FLOW_OK;
} else {
@@ -1772,9 +1844,7 @@
gst_buffer_unmap (codec_data, &minfo);
} else {
vc1parse->input_header_format = VC1_HEADER_FORMAT_NONE;
- if (header_format && strcmp (header_format, "sequence-layer") != 0)
- vc1parse->input_header_format = VC1_HEADER_FORMAT_SEQUENCE_LAYER;
- else if (header_format && strcmp (header_format, "none") != 0)
+ if (header_format && strcmp (header_format, "none") != 0)
GST_WARNING_OBJECT (vc1parse,
"Upstream claimed '%s' header format but 'none' detected",
header_format);
diff --git a/gst/videoparsers/gstvc1parse.h b/gst/videoparsers/gstvc1parse.h
index 6d97ec8..28c3c4f 100644
--- a/gst/videoparsers/gstvc1parse.h
+++ b/gst/videoparsers/gstvc1parse.h
@@ -56,7 +56,7 @@
} VC1StreamFormat;
typedef enum {
- GST_VC1_PARSE_FORMAT_WMV3,
+ GST_VC1_PARSE_FORMAT_WMV3 = 0,
GST_VC1_PARSE_FORMAT_WVC1
} GstVC1ParseFormat;
diff --git a/ltmain.sh b/ltmain.sh
index 3fd54df..bffda54 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.10
+# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11
# automake: $automake_version
# autoconf: $autoconf_version
#
@@ -80,7 +80,7 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.10"
+VERSION="2.4.2 Debian-2.4.2-1.11"
TIMESTAMP=""
package_revision=1.3337
diff --git a/po/af.gmo b/po/af.gmo
index b6017fd..1bfc47b 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 2cf9fe0..9cc411e 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2004-03-18 14:16+0200\n"
"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index 0010e78..9240759 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 12ad2ba..5b66436 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2004-03-19 18:29+0200\n"
"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 3c6e96e..b2e52ee 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 9376de6..ee0e06b 100644
--- a/po/bg.po
+++ b/po/bg.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-04-26 22:30+0300\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 04c3eb3..517a43b 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 1f1c09e..0058ff7 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2012-01-01 14:19+0100\n"
"Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index de42511..931614d 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index df3f8ec..666bf3a 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11,7 +11,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.1.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2013-09-18 10:05+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
diff --git a/po/da.gmo b/po/da.gmo
index f10ec66..e2ca4c7 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index e8ae233..45b8f23 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad-1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-29 11:28+0200\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
diff --git a/po/de.gmo b/po/de.gmo
index c302244..817691b 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 5d7edea..d8887ea 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-31 19:37+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index a4c4c34..beb34b0 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index e2ec8db..42403bc 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2012-05-05 19:17+0100\n"
"Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 4af6014..edff2d1 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 654164a..e01e275 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2004-04-26 10:41-0400\n"
"Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
"Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index ff07254..d134187 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index b75bb4f..d9200f8 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-06-04 22:18+0200\n"
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index b03fa82..e49a4ce 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 3142104..3f3a9de 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-10-02 15:47+0200\n"
"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index eefe9e4..9d20682 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index cdeb1d3..0c5f900 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2010-03-25 12:30+0100\n"
"Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 7120582..2e6c8af 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 1f355a8..6e7fb4a 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2009-08-12 22:13+0300\n"
"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 03fad60..1dfa01f 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 57e06fa..5328638 100644
--- a/po/fr.po
+++ b/po/fr.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-04-28 09:13+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 347ec2a..cb03802 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 2ceb839..f8e2056 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-09-05 12:50+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index f4df703..f6dd115 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.4.3\n"
+"Project-Id-Version: gst-plugins-bad 1.4.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\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,13 +16,13 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ext/dash/gstdashdemux.c:1511 ext/smoothstreaming/gstmssdemux.c:1532
-#: gst/mpegtsdemux/mpegtsbase.c:1366 gst/mpegtsdemux/mpegtsbase.c:1370
+#: ext/dash/gstdashdemux.c:1513 ext/smoothstreaming/gstmssdemux.c:1532
+#: gst/mpegtsdemux/mpegtsbase.c:1353 gst/mpegtsdemux/mpegtsbase.c:1357
#: gst/nuvdemux/gstnuvdemux.c:737
msgid "Internal data stream error."
msgstr ""
-#: ext/gl/gstgltestsrc.c:544
+#: ext/gl/gstgltestsrc.c:550
msgid "format wasn't negotiated before get function"
msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 5208e20..f1f9809 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index a32b373..e9bdad9 100644
--- a/po/hr.po
+++ b/po/hr.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2012-04-16 02:06+0200\n"
"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index f4c7e1b..4039286 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 9d16fd3..513e0fe 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-31 11:18+0200\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index f176d0c..497838e 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 4aeb9c9..2a9786c 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\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"
diff --git a/po/it.gmo b/po/it.gmo
index db43319..deb96d7 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 32da109..1adebeb 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2009-08-14 00:12+0200\n"
"Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index a51ed47..3d7a0ce 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 74b2408..5d490cc 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-04-26 19:38+0900\n"
"Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/ky.gmo b/po/ky.gmo
index bb46988..1dae19e 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 21bea54..a4cb064 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2007-11-13 17:16+0600\n"
"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index 1593e60..a2cb0a3 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 15d53bf..be68323 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2008-05-14 02:13+0300\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index e0f2ff8..e0b59c6 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index cb10779..0c05667 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-04-20 15:52+0300\n"
"Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
"Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
diff --git a/po/mt.gmo b/po/mt.gmo
index c2bfc81..07ecbaa 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 0be3019..fffcc17 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2008-10-26 20:27+0100\n"
"Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
"Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index 872043c..4f3080c 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index a7784bf..2cee322 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-07-22 12:38+0100\n"
"Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index db37e07..5c75ff8 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 533ba26..ef5f9b3 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-07-22 10:49+0200\n"
"Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index 6ae7f1b..5657e06 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 9e96616..d177e5f 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2004-09-27 13:32+0530\n"
"Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
"Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index fff6ce0..fa65a83 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 9523354..fd7984d 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-29 15:47+0200\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 874ecc4..7c2d1ed 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 aeebddc..f56988e 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2013-12-17 01:09-0200\n"
"Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
diff --git a/po/ro.gmo b/po/ro.gmo
index 1e458c9..a79c815 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 3edc44b..d112fed 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2010-08-16 03:11+0300\n"
"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index 297b977..2e7b9ae 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 3f5c1c6..9f55b52 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-09-06 10:56+0400\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@mx.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index 83ca5a8..d15454d 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 0b40cf4..5567ba3 100644
--- a/po/sk.po
+++ b/po/sk.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-01-30 10:44+0100\n"
"Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index 19cf78d..aff9890 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 705ef3c..79261d5 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-04-26 15:21+0100\n"
"Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 66965bc..c2ff96a 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index a633d48..3dc1251 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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2008-08-15 16:07+0200\n"
"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
"Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index f8dedbe..d963e15 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 882530d..3f51c44 100644
--- a/po/sr.po
+++ b/po/sr.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-09-13 10:39+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 439dc47..e4734b3 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 9923f43..af540ad 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-09-19 02:43+0200\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 54c175e..02f9f5a 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index ef1040b..ec3599a 100644
--- a/po/tr.po
+++ b/po/tr.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: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2011-04-26 19:21+0200\n"
"Last-Translator: Server Acim <serveracim@gmail.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 14ff630..e71ce3a 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index e47f3e9..ae430cd 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-29 08:35+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index bfde2ee..9356cd4 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 5d441a0..d5bdec8 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad-1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2014-08-29 15:09+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 1fe9bad..06ac43a 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 d21e3e8..c425075 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.16.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-09-24 11:38+0300\n"
+"POT-Creation-Date: 2014-11-06 12:31+0100\n"
"PO-Revision-Date: 2009-11-20 18:12中国标准时间\n"
"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c
index c2a5b6c..36e4372 100644
--- a/sys/androidmedia/gstamc.c
+++ b/sys/androidmedia/gstamc.c
@@ -2753,7 +2753,7 @@
}
frame_size =
- stride * slice_height + 2 * (((stride + 1) / 2) * (slice_height +
+ stride * slice_height + 2 * ((stride + 1) / 2) * ((slice_height +
1) / 2);
break;
}
diff --git a/sys/applemedia/Makefile.am b/sys/applemedia/Makefile.am
index ecbaf08..01c340c 100644
--- a/sys/applemedia/Makefile.am
+++ b/sys/applemedia/Makefile.am
@@ -5,22 +5,14 @@
vtutil.c \
corevideobuffer.c \
coremediabuffer.c \
- coremediactx.c \
- vtapi.c \
- atdec.c \
- dynapi.c
+ atdec.c
libgstapplemedia_la_CPPFLAGS = \
- -Dgst_dyn_api_get_type=gst_dyn_api_priv_get_type \
- -Dgst_dyn_api_debug=gst_dyn_api_priv_debug \
- -D_gst_dyn_api_new=_gst_dyn_api_priv_new \
-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new \
-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type \
-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer\
-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new \
- -Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type \
- -Dgst_core_media_ctx_new=gst_core_media_ctx_priv_new \
- -Dgst_core_media_ctx_get_type=gst_core_media_ctx_priv_get_type
+ -Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type
libgstapplemedia_la_CFLAGS = \
$(GST_CFLAGS) \
@@ -57,18 +49,12 @@
noinst_HEADERS = \
qtkitvideosrc.h \
avfvideosrc.h \
- vth264decbin.h \
- vth264encbin.h \
vtenc.h \
vtdec.h \
vtutil.h \
corevideobuffer.h \
coremediabuffer.h \
- coremediactx.h \
- vtapi.h \
atdec.h \
- dynapi.h \
- dynapi-internal.h \
iosassetsrc.h \
avfassetsrc.h
@@ -108,5 +94,5 @@
vtenc.c \
vtdec.c
-libgstapplemedia_la_LDFLAGS += -Wl,-framework -Wl,VideoToolbox
+libgstapplemedia_la_LDFLAGS += -Wl,-weak_framework -Wl,VideoToolbox
endif
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index ec0f3f5..24e2fc4 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -106,7 +106,7 @@
@HAVE_VIDEOTOOLBOX_TRUE@ vtenc.c \
@HAVE_VIDEOTOOLBOX_TRUE@ vtdec.c
-@HAVE_VIDEOTOOLBOX_TRUE@am__append_9 = -Wl,-framework -Wl,VideoToolbox
+@HAVE_VIDEOTOOLBOX_TRUE@am__append_9 = -Wl,-weak_framework -Wl,VideoToolbox
subdir = sys/applemedia
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/depcomp $(noinst_HEADERS)
@@ -184,9 +184,8 @@
libgstapplemedia_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am__libgstapplemedia_la_SOURCES_DIST = plugin.m vtutil.c \
- corevideobuffer.c coremediabuffer.c coremediactx.c vtapi.c \
- atdec.c dynapi.c iosassetsrc.m qtkitvideosrc.m avfvideosrc.m \
- avfassetsrc.m vtenc.c vtdec.c
+ corevideobuffer.c coremediabuffer.c atdec.c iosassetsrc.m \
+ qtkitvideosrc.m avfvideosrc.m avfassetsrc.m vtenc.c vtdec.c
@HAVE_IOS_TRUE@am__objects_1 = libgstapplemedia_la-iosassetsrc.lo
@HAVE_IOS_FALSE@am__objects_2 = libgstapplemedia_la-qtkitvideosrc.lo
@HAVE_AVFOUNDATION_TRUE@am__objects_3 = \
@@ -198,10 +197,8 @@
libgstapplemedia_la-vtutil.lo \
libgstapplemedia_la-corevideobuffer.lo \
libgstapplemedia_la-coremediabuffer.lo \
- libgstapplemedia_la-coremediactx.lo \
- libgstapplemedia_la-vtapi.lo libgstapplemedia_la-atdec.lo \
- libgstapplemedia_la-dynapi.lo $(am__objects_1) \
- $(am__objects_2) $(am__objects_3) $(am__objects_4)
+ libgstapplemedia_la-atdec.lo $(am__objects_1) $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4)
libgstapplemedia_la_OBJECTS = $(am_libgstapplemedia_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -790,20 +787,14 @@
wayland_scanner = @wayland_scanner@
plugin_LTLIBRARIES = libgstapplemedia.la
libgstapplemedia_la_SOURCES = plugin.m vtutil.c corevideobuffer.c \
- coremediabuffer.c coremediactx.c vtapi.c atdec.c dynapi.c \
- $(am__append_2) $(am__append_4) $(am__append_6) \
- $(am__append_8)
+ coremediabuffer.c atdec.c $(am__append_2) $(am__append_4) \
+ $(am__append_6) $(am__append_8)
libgstapplemedia_la_CPPFLAGS = \
- -Dgst_dyn_api_get_type=gst_dyn_api_priv_get_type \
- -Dgst_dyn_api_debug=gst_dyn_api_priv_debug \
- -D_gst_dyn_api_new=_gst_dyn_api_priv_new \
-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new \
-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type \
-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer\
-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new \
- -Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type \
- -Dgst_core_media_ctx_new=gst_core_media_ctx_priv_new \
- -Dgst_core_media_ctx_get_type=gst_core_media_ctx_priv_get_type
+ -Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type
libgstapplemedia_la_CFLAGS = \
$(GST_CFLAGS) \
@@ -828,18 +819,12 @@
noinst_HEADERS = \
qtkitvideosrc.h \
avfvideosrc.h \
- vth264decbin.h \
- vth264encbin.h \
vtenc.h \
vtdec.h \
vtutil.h \
corevideobuffer.h \
coremediabuffer.h \
- coremediactx.h \
- vtapi.h \
atdec.h \
- dynapi.h \
- dynapi-internal.h \
iosassetsrc.h \
avfassetsrc.h
@@ -926,13 +911,10 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-avfassetsrc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-avfvideosrc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-coremediabuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-coremediactx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-corevideobuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-dynapi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosassetsrc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-plugin.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-qtkitvideosrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-vtapi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-vtdec.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-vtenc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-vtutil.Plo@am__quote@
@@ -982,20 +964,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 $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-coremediabuffer.lo `test -f 'coremediabuffer.c' || echo '$(srcdir)/'`coremediabuffer.c
-libgstapplemedia_la-coremediactx.lo: coremediactx.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-coremediactx.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-coremediactx.Tpo -c -o libgstapplemedia_la-coremediactx.lo `test -f 'coremediactx.c' || echo '$(srcdir)/'`coremediactx.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-coremediactx.Tpo $(DEPDIR)/libgstapplemedia_la-coremediactx.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coremediactx.c' object='libgstapplemedia_la-coremediactx.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 $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-coremediactx.lo `test -f 'coremediactx.c' || echo '$(srcdir)/'`coremediactx.c
-
-libgstapplemedia_la-vtapi.lo: vtapi.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-vtapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-vtapi.Tpo -c -o libgstapplemedia_la-vtapi.lo `test -f 'vtapi.c' || echo '$(srcdir)/'`vtapi.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-vtapi.Tpo $(DEPDIR)/libgstapplemedia_la-vtapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtapi.c' object='libgstapplemedia_la-vtapi.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 $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-vtapi.lo `test -f 'vtapi.c' || echo '$(srcdir)/'`vtapi.c
-
libgstapplemedia_la-atdec.lo: atdec.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-atdec.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-atdec.Tpo -c -o libgstapplemedia_la-atdec.lo `test -f 'atdec.c' || echo '$(srcdir)/'`atdec.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-atdec.Tpo $(DEPDIR)/libgstapplemedia_la-atdec.Plo
@@ -1003,13 +971,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 $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-atdec.lo `test -f 'atdec.c' || echo '$(srcdir)/'`atdec.c
-libgstapplemedia_la-dynapi.lo: dynapi.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-dynapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-dynapi.Tpo -c -o libgstapplemedia_la-dynapi.lo `test -f 'dynapi.c' || echo '$(srcdir)/'`dynapi.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-dynapi.Tpo $(DEPDIR)/libgstapplemedia_la-dynapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dynapi.c' object='libgstapplemedia_la-dynapi.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 $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-dynapi.lo `test -f 'dynapi.c' || echo '$(srcdir)/'`dynapi.c
-
libgstapplemedia_la-vtenc.lo: vtenc.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-vtenc.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-vtenc.Tpo -c -o libgstapplemedia_la-vtenc.lo `test -f 'vtenc.c' || echo '$(srcdir)/'`vtenc.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-vtenc.Tpo $(DEPDIR)/libgstapplemedia_la-vtenc.Plo
diff --git a/sys/applemedia/atdec.c b/sys/applemedia/atdec.c
index 933f3f8..d581fb8 100644
--- a/sys/applemedia/atdec.c
+++ b/sys/applemedia/atdec.c
@@ -441,7 +441,7 @@
GST_DEBUG_OBJECT (atdec,
"Got output buffer of size %u at position %" G_GUINT64_FORMAT,
- output_buffer->mAudioDataByteSize, atdec->output_position);
+ (guint) output_buffer->mAudioDataByteSize, atdec->output_position);
atdec->output_position +=
output_buffer->mAudioDataByteSize / audio_info->bpf;
@@ -487,7 +487,8 @@
{
GST_AUDIO_DECODER_ERROR (atdec, 1, STREAM, DECODE, (NULL),
("AudioQueueOfflineRender returned invalid buffer size: %u (bpf %d)",
- output_buffer->mAudioDataByteSize, audio_info->bpf), flow_ret);
+ (guint) output_buffer->mAudioDataByteSize, audio_info->bpf),
+ flow_ret);
AudioQueueFreeBuffer (atdec->queue, output_buffer);
diff --git a/sys/applemedia/coremediabuffer.c b/sys/applemedia/coremediabuffer.c
index 73995f0..548f858 100644
--- a/sys/applemedia/coremediabuffer.c
+++ b/sys/applemedia/coremediabuffer.c
@@ -25,8 +25,7 @@
gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
{
if (meta->image_buf != NULL) {
- CVPixelBufferUnlockBaseAddress (meta->image_buf,
- kCVPixelBufferLock_ReadOnly);
+ CVPixelBufferUnlockBaseAddress (meta->image_buf, 0);
CVBufferRelease (meta->image_buf);
}
if (meta->block_buf != NULL) {
@@ -93,8 +92,7 @@
GstVideoMeta *video_meta;
UInt32 size;
- if (CVPixelBufferLockBaseAddress (pixel_buf,
- kCVPixelBufferLock_ReadOnly) != kCVReturnSuccess) {
+ if (CVPixelBufferLockBaseAddress (pixel_buf, 0) != kCVReturnSuccess) {
GST_ERROR ("Could not lock pixel buffer base address");
return FALSE;
}
diff --git a/sys/applemedia/coremediactx.c b/sys/applemedia/coremediactx.c
deleted file mode 100644
index ac37425..0000000
--- a/sys/applemedia/coremediactx.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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 "coremediactx.h"
-
-#include <gst/gst.h>
-
-typedef struct _GstApiProvider GstApiProvider;
-
-typedef gpointer (*GstApiProviderObtainFunc) (GError ** error);
-
-struct _GstApiProvider
-{
- GstCoreMediaApi api;
- GstApiProviderObtainFunc obtain;
- guint offset;
-};
-
-#define API_PROVIDER(AN, a_n) \
- { GST_API_##AN, (GstApiProviderObtainFunc) gst_##a_n##_api_obtain, \
- G_STRUCT_OFFSET (GstCoreMediaCtx, a_n) }
-
-static const GstApiProvider api_provider[] = {
- API_PROVIDER (VIDEO_TOOLBOX, vt),
-};
-
-G_DEFINE_TYPE (GstCoreMediaCtx, gst_core_media_ctx, G_TYPE_OBJECT);
-
-static void
-gst_core_media_ctx_init (GstCoreMediaCtx * self)
-{
-}
-
-static void
-gst_core_media_ctx_dispose (GObject * object)
-{
- GstCoreMediaCtx *self = GST_CORE_MEDIA_CTX_CAST (object);
- guint i;
-
- for (i = 0; i != G_N_ELEMENTS (api_provider); i++) {
- const GstApiProvider *ap = &api_provider[i];
- gpointer *api_ptr = (gpointer *) ((guint8 *) self + ap->offset);
-
- if (*api_ptr != NULL) {
- g_object_unref (*api_ptr);
- *api_ptr = NULL;
- }
- }
-
- G_OBJECT_CLASS (gst_core_media_ctx_parent_class)->dispose (object);
-}
-
-static void
-gst_core_media_ctx_class_init (GstCoreMediaCtxClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->dispose = gst_core_media_ctx_dispose;
-}
-
-GstCoreMediaCtx *
-gst_core_media_ctx_new (GstCoreMediaApi required_apis, GError ** error)
-{
- GstCoreMediaCtx *ctx;
- GArray *error_messages;
- guint i;
-
- ctx = g_object_new (GST_TYPE_CORE_MEDIA_CTX, NULL);
-
- error_messages = g_array_new (TRUE, FALSE, sizeof (gchar *));
-
- for (i = 0; i != G_N_ELEMENTS (api_provider); i++) {
- const GstApiProvider *ap = &api_provider[i];
-
- if ((required_apis & ap->api) != 0) {
- gpointer *api_ptr = (gpointer *) ((guint8 *) ctx + ap->offset);
- GError *tmp_error = NULL;
-
- *api_ptr = ap->obtain (&tmp_error);
- if (tmp_error != NULL) {
- gchar *message_copy = g_strdup (tmp_error->message);
- g_array_append_val (error_messages, message_copy);
- g_clear_error (&tmp_error);
- }
- }
- }
-
- if (error_messages->len != 0) {
- gchar *errors_joined;
-
- errors_joined = g_strjoinv ("\n\t* ", (gchar **) error_messages->data);
- g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
- "Could not obtain required API%s:%s%s",
- (error_messages->len == 1) ? "" : "s",
- (error_messages->len == 1) ? " " : "\n\t* ", errors_joined);
- g_free (errors_joined);
-
- g_object_unref (ctx);
- ctx = NULL;
- }
-
- for (i = 0; i != error_messages->len; i++)
- g_free (g_array_index (error_messages, gchar *, i));
- g_array_free (error_messages, TRUE);
-
- return ctx;
-}
diff --git a/sys/applemedia/coremediactx.h b/sys/applemedia/coremediactx.h
deleted file mode 100644
index 54421a3..0000000
--- a/sys/applemedia/coremediactx.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_CORE_MEDIA_CTX_H__
-#define __GST_CORE_MEDIA_CTX_H__
-
-#include "vtapi.h"
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_CORE_MEDIA_CTX \
- (gst_core_media_ctx_get_type ())
-#define GST_CORE_MEDIA_CTX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_CORE_MEDIA_CTX, GstCoreMediaCtx))
-#define GST_CORE_MEDIA_CTX_CAST(obj) \
- ((GstCoreMediaCtx *) (obj))
-#define GST_CORE_MEDIA_CTX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_CORE_MEDIA_CTX, GstCoreMediaCtxClass))
-#define GST_IS_CORE_MEDIA_CTX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_CORE_MEDIA_CTX))
-#define GST_IS_CORE_MEDIA_CTX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CORE_MEDIA_CTX))
-
-typedef struct _GstCoreMediaCtx GstCoreMediaCtx;
-typedef struct _GstCoreMediaCtxClass GstCoreMediaCtxClass;
-
-typedef enum _GstCoreMediaApi GstCoreMediaApi;
-
-struct _GstCoreMediaCtx
-{
- GObject parent;
-
- /* Common */
- GstVTApi *vt;
-};
-
-struct _GstCoreMediaCtxClass
-{
- GObjectClass parent_class;
-};
-
-enum _GstCoreMediaApi
-{
- GST_API_VIDEO_TOOLBOX = (1 << 0),
-};
-
-GType gst_core_media_ctx_get_type (void);
-
-GstCoreMediaCtx * gst_core_media_ctx_new (GstCoreMediaApi required_apis,
- GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia/corevideobuffer.c b/sys/applemedia/corevideobuffer.c
index 0e08398..b1da334 100644
--- a/sys/applemedia/corevideobuffer.c
+++ b/sys/applemedia/corevideobuffer.c
@@ -23,7 +23,7 @@
gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
{
if (meta->pixbuf != NULL) {
- CVPixelBufferUnlockBaseAddress (meta->pixbuf, kCVPixelBufferLock_ReadOnly);
+ CVPixelBufferUnlockBaseAddress (meta->pixbuf, 0);
}
CVBufferRelease (meta->cvbuf);
@@ -74,8 +74,7 @@
pixbuf = (CVPixelBufferRef) cvbuf;
- if (CVPixelBufferLockBaseAddress (pixbuf,
- kCVPixelBufferLock_ReadOnly) != kCVReturnSuccess) {
+ if (CVPixelBufferLockBaseAddress (pixbuf, 0) != kCVReturnSuccess) {
goto error;
}
diff --git a/sys/applemedia/dynapi-internal.h b/sys/applemedia/dynapi-internal.h
deleted file mode 100644
index adcd4f1..0000000
--- a/sys/applemedia/dynapi-internal.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_DYN_API_INTERNAL_H__
-#define __GST_DYN_API_INTERNAL_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstDynSymSpec GstDynSymSpec;
-
-struct _GstDynSymSpec
-{
- const gchar * name;
- guint offset;
- gboolean is_required;
-};
-
-gpointer _gst_dyn_api_new (GType derived_type, const gchar * filename,
- const GstDynSymSpec * symbols, GError ** error);
-
-G_END_DECLS
-
-#endif
-
diff --git a/sys/applemedia/dynapi.c b/sys/applemedia/dynapi.c
deleted file mode 100644
index 2317f80..0000000
--- a/sys/applemedia/dynapi.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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 "dynapi.h"
-
-#include "dynapi-internal.h"
-
-#include <gmodule.h>
-#include <gst/gst.h>
-
-GST_DEBUG_CATEGORY (gst_dyn_api_debug);
-#define GST_CAT_DEFAULT gst_dyn_api_debug
-
-enum
-{
- PROP_0,
- PROP_FILENAME
-};
-
-struct _GstDynApiPrivate
-{
- gchar *filename;
- GModule *module;
-};
-
-G_DEFINE_TYPE (GstDynApi, gst_dyn_api, G_TYPE_OBJECT);
-
-static void
-gst_dyn_api_init (GstDynApi * self)
-{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GST_TYPE_DYN_API,
- GstDynApiPrivate);
-}
-
-static void
-gst_dyn_api_dispose (GObject * object)
-{
- GstDynApi *self = GST_DYN_API_CAST (object);
- GstDynApiPrivate *priv = self->priv;
-
- if (priv->module != NULL) {
- g_module_close (priv->module);
- priv->module = NULL;
- }
-
- G_OBJECT_CLASS (gst_dyn_api_parent_class)->dispose (object);
-}
-
-static void
-gst_dyn_api_finalize (GObject * object)
-{
- GstDynApi *self = GST_DYN_API_CAST (object);
- GstDynApiPrivate *priv = self->priv;
-
- g_free (priv->filename);
-
- G_OBJECT_CLASS (gst_dyn_api_parent_class)->finalize (object);
-}
-
-static void
-gst_dyn_api_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstDynApi *self = GST_DYN_API (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_value_set_string (value, self->priv->filename);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_dyn_api_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstDynApi *self = GST_DYN_API (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_free (self->priv->filename);
- self->priv->filename = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_dyn_api_class_init (GstDynApiClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->dispose = gst_dyn_api_dispose;
- gobject_class->finalize = gst_dyn_api_finalize;
- gobject_class->get_property = gst_dyn_api_get_property;
- gobject_class->set_property = gst_dyn_api_set_property;
-
- g_type_class_add_private (klass, sizeof (GstDynApiPrivate));
-
- g_object_class_install_property (gobject_class, PROP_FILENAME,
- g_param_spec_string ("filename", "Filename", "Filename", NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-}
-
-gpointer
-_gst_dyn_api_new (GType derived_type, const gchar * filename,
- const GstDynSymSpec * symbols, GError ** error)
-{
- GstDynApi *api;
- GstDynApiPrivate *priv;
- guint i;
- GArray *names_not_found;
-
- api = g_object_new (derived_type, "filename", filename, NULL);
- priv = api->priv;
-
- priv->module = g_module_open (priv->filename, 0);
- if (priv->module == NULL)
- goto open_failed;
-
- names_not_found = g_array_new (TRUE, FALSE, sizeof (gchar *));
-
- for (i = 0; symbols[i].name != NULL; i++) {
- const GstDynSymSpec *s = &symbols[i];
- if (!g_module_symbol (priv->module, s->name,
- (gpointer *) (((guint8 *) api) + s->offset)) && s->is_required) {
- g_array_append_val (names_not_found, s->name);
- }
- }
-
- if (names_not_found->len > 0)
- goto one_or_more_name_not_found;
-
- g_array_free (names_not_found, TRUE);
-
- return api;
-
- /* ERRORS */
-open_failed:
- {
- gchar *basename;
-
- basename = g_path_get_basename (filename);
- g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
- "failed to open %s", basename);
- g_free (basename);
-
- goto any_error;
- }
-one_or_more_name_not_found:
- {
- gchar *basename, *names_joined;
-
- basename = g_path_get_basename (filename);
- names_joined = g_strjoinv (", ", (gchar **) names_not_found->data);
- g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
- "missing %u symbol%s in %s: %s",
- names_not_found->len, (names_not_found->len == 1) ? "" : "s",
- basename, names_joined);
- g_free (names_joined);
- g_free (basename);
- g_array_free (names_not_found, TRUE);
-
- goto any_error;
- }
-any_error:
- {
- g_object_unref (api);
-
- return NULL;
- }
-}
diff --git a/sys/applemedia/dynapi.h b/sys/applemedia/dynapi.h
deleted file mode 100644
index b8eda85..0000000
--- a/sys/applemedia/dynapi.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_DYN_API_H__
-#define __GST_DYN_API_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_DYN_API \
- (gst_dyn_api_get_type ())
-#define GST_DYN_API(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DYN_API, GstDynApi))
-#define GST_DYN_API_CAST(obj) \
- ((GstDynApi *) (obj))
-#define GST_DYN_API_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DYN_API, GstDynApiClass))
-#define GST_IS_DYN_API(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DYN_API))
-#define GST_IS_DYN_API_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DYN_API))
-
-#define GST_DYN_SYM_SPEC(type, name) \
- { G_STRINGIFY (name), G_STRUCT_OFFSET (type, name), TRUE }
-#define GST_DYN_SYM_SPEC_OPTIONAL(type, name) \
- { G_STRINGIFY (name), G_STRUCT_OFFSET (type, name), FALSE }
-
-typedef struct _GstDynApi GstDynApi;
-typedef struct _GstDynApiClass GstDynApiClass;
-typedef struct _GstDynApiPrivate GstDynApiPrivate;
-
-struct _GstDynApi
-{
- GObject parent;
-
- GstDynApiPrivate * priv;
-};
-
-struct _GstDynApiClass
-{
- GObjectClass parent_class;
-};
-
-GType gst_dyn_api_get_type (void);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia/plugin.m b/sys/applemedia/plugin.m
index e85f67a..44ff3e4 100644
--- a/sys/applemedia/plugin.m
+++ b/sys/applemedia/plugin.m
@@ -36,8 +36,6 @@
#endif
#ifndef HAVE_IOS
#define AV_RANK GST_RANK_SECONDARY
-#include "vth264decbin.h"
-#include "vth264encbin.h"
#else
#define AV_RANK GST_RANK_PRIMARY
#endif
@@ -81,17 +79,14 @@
GST_TYPE_AVF_ASSET_SRC);
#endif
-#if 0
- res &= gst_element_register (plugin, "vth264decbin", GST_RANK_NONE,
- GST_TYPE_VT_H264_DEC_BIN);
- res &= gst_element_register (plugin, "vth264encbin", GST_RANK_NONE,
- GST_TYPE_VT_H264_ENC_BIN);
-#endif
res &= gst_element_register (plugin, "atdec", GST_RANK_MARGINAL, GST_TYPE_ATDEC);
#ifdef HAVE_VIDEOTOOLBOX
- res &= gst_element_register (plugin, "vtdec", GST_RANK_PRIMARY, GST_TYPE_VTDEC);
- gst_vtenc_register_elements (plugin);
+ /* Check if the framework actually exists at runtime */
+ if (VTCompressionSessionCreate != NULL) {
+ res &= gst_element_register (plugin, "vtdec", GST_RANK_PRIMARY, GST_TYPE_VTDEC);
+ gst_vtenc_register_elements (plugin);
+ }
#endif
return res;
diff --git a/sys/applemedia/vtapi.c b/sys/applemedia/vtapi.c
deleted file mode 100644
index 2def2c5..0000000
--- a/sys/applemedia/vtapi.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2010, 2013 Ole André Vadla Ravnås <oleavr@soundrop.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 "vtapi.h"
-
-#include "dynapi-internal.h"
-
-#include <gmodule.h>
-
-#define VT_FRAMEWORK_PATH "/System/Library/Frameworks/" \
- "VideoToolbox.framework/VideoToolbox"
-#define VT_FRAMEWORK_PATH_OLD "/System/Library/PrivateFrameworks/" \
- "VideoToolbox.framework/VideoToolbox"
-
-G_DEFINE_TYPE (GstVTApi, gst_vt_api, GST_TYPE_DYN_API);
-
-static void
-gst_vt_api_init (GstVTApi * self)
-{
-}
-
-static void
-gst_vt_api_class_init (GstVTApiClass * klass)
-{
-}
-
-#define SYM_SPEC(name) GST_DYN_SYM_SPEC (GstVTApi, name)
-
-GstVTApi *
-gst_vt_api_obtain (GError ** error)
-{
- static const GstDynSymSpec symbols[] = {
- SYM_SPEC (VTCompressionSessionCompleteFrames),
- SYM_SPEC (VTCompressionSessionCopyProperty),
- SYM_SPEC (VTCompressionSessionCopySupportedPropertyDictionary),
- SYM_SPEC (VTCompressionSessionCreate),
- SYM_SPEC (VTCompressionSessionEncodeFrame),
- SYM_SPEC (VTCompressionSessionInvalidate),
- SYM_SPEC (VTCompressionSessionSetProperty),
-
- SYM_SPEC (VTDecompressionSessionCreate),
- SYM_SPEC (VTDecompressionSessionDecodeFrame),
- SYM_SPEC (VTDecompressionSessionInvalidate),
- SYM_SPEC (VTDecompressionSessionWaitForAsynchronousFrames),
- SYM_SPEC (VTDecompressionSessionFinishDelayedFrames),
-
- SYM_SPEC (kVTCompressionPropertyKey_AllowTemporalCompression),
- SYM_SPEC (kVTCompressionPropertyKey_AverageDataRate),
- SYM_SPEC (kVTCompressionPropertyKey_ExpectedFrameRate),
- SYM_SPEC (kVTCompressionPropertyKey_ExpectedDuration),
- SYM_SPEC (kVTCompressionPropertyKey_MaxKeyFrameInterval),
- SYM_SPEC (kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration),
- SYM_SPEC (kVTCompressionPropertyKey_ProfileLevel),
- SYM_SPEC (kVTCompressionPropertyKey_Usage),
-
- SYM_SPEC (kVTEncodeFrameOptionKey_ForceKeyFrame),
-
- SYM_SPEC (kVTProfileLevel_H264_Baseline_1_3),
- SYM_SPEC (kVTProfileLevel_H264_Baseline_3_0),
- SYM_SPEC (kVTProfileLevel_H264_Extended_5_0),
- SYM_SPEC (kVTProfileLevel_H264_High_5_0),
- SYM_SPEC (kVTProfileLevel_H264_Main_3_0),
- SYM_SPEC (kVTProfileLevel_H264_Main_3_1),
- SYM_SPEC (kVTProfileLevel_H264_Main_4_0),
- SYM_SPEC (kVTProfileLevel_H264_Main_4_1),
- SYM_SPEC (kVTProfileLevel_H264_Main_5_0),
-
- {NULL, 0},
- };
- GstVTApi *result;
- GModule *module;
-
- module = g_module_open (VT_FRAMEWORK_PATH, 0);
- if (module != NULL) {
- result = _gst_dyn_api_new (gst_vt_api_get_type (), VT_FRAMEWORK_PATH,
- symbols, error);
- g_module_close (module);
- } else {
- result = _gst_dyn_api_new (gst_vt_api_get_type (), VT_FRAMEWORK_PATH_OLD,
- symbols, error);
- }
-
- return result;
-}
diff --git a/sys/applemedia/vtapi.h b/sys/applemedia/vtapi.h
deleted file mode 100644
index 9943717..0000000
--- a/sys/applemedia/vtapi.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_VT_API_H__
-#define __GST_VT_API_H__
-
-#include "dynapi.h"
-#include "CoreMedia/CoreMedia.h"
-
-G_BEGIN_DECLS
-
-typedef struct _GstVTApi GstVTApi;
-typedef struct _GstVTApiClass GstVTApiClass;
-
-typedef enum _VTStatus VTStatus;
-typedef enum _VTDecodeFrameFlags VTDecodeFrameFlags;
-typedef enum _VTDecodeInfoFlags VTDecodeInfoFlags;
-
-typedef guint32 VTFormatId;
-
-typedef CFTypeRef VTCompressionSessionRef;
-typedef CFTypeRef VTDecompressionSessionRef;
-typedef struct _VTCompressionOutputCallback VTCompressionOutputCallback;
-typedef struct _VTDecompressionOutputCallback VTDecompressionOutputCallback;
-
-typedef VTStatus (* VTCompressionOutputCallbackFunc) (void * data, int a2,
- int a3, int a4, CMSampleBufferRef sbuf, int a6, int a7);
-typedef void (* VTDecompressionOutputCallbackFunc) (void *data1, void *data2,
- VTStatus result, VTDecodeInfoFlags info, CVBufferRef cvbuf,
- CMTime pts, CMTime dts);
-
-enum _VTStatus
-{
- kVTSuccess = 0
-};
-
-enum _VTFormat
-{
- kVTFormatH264 = 'avc1',
- kVTFormatMPEG2 = 'mp2v',
- kVTFormatJPEG = 'jpeg'
-};
-
-enum _VTDecodeFrameFlags
-{
- kVTDecodeFrame_EnableAsynchronousDecompression = 1<<0,
- kVTDecodeFrame_DoNotOutputFrame = 1<<1,
- /* low-power mode that can not decode faster than 1x realtime. */
- kVTDecodeFrame_1xRealTimePlayback = 1<<2,
- /* Output frame in PTS order.
- * Needs to call VTDecompressionSessionFinishDelayedFrames to dequeue */
- kVTDecodeFrame_EnableTemporalProcessing = 1<<3,
-};
-
-enum _VTDecodeInfoFlags
-{
- kVTDecodeInfo_Asynchronous = 1UL << 0,
- kVTDecodeInfo_FrameDropped = 1UL << 1,
-};
-
-struct _VTCompressionOutputCallback
-{
- VTCompressionOutputCallbackFunc func;
- void * data;
-};
-
-struct _VTDecompressionOutputCallback
-{
- VTDecompressionOutputCallbackFunc func;
- void * data;
-};
-
-struct _GstVTApi
-{
- GstDynApi parent;
-
- VTStatus (* VTCompressionSessionCompleteFrames)
- (VTCompressionSessionRef session, CMTime completeUntilDisplayTimestamp);
- VTStatus (* VTCompressionSessionCopyProperty)
- (VTCompressionSessionRef session, CFTypeRef key, void* unk,
- CFTypeRef * value);
- VTStatus (* VTCompressionSessionCopySupportedPropertyDictionary)
- (VTCompressionSessionRef session, CFDictionaryRef * dict);
- VTStatus (* VTCompressionSessionCreate)
- (CFAllocatorRef allocator, gint width, gint height, VTFormatId formatId,
- gsize unk1, CFDictionaryRef sourcePixelBufferAttributes, gsize unk2,
- VTCompressionOutputCallback outputCallback,
- VTCompressionSessionRef * session);
- VTStatus (* VTCompressionSessionEncodeFrame)
- (VTCompressionSessionRef session, CVPixelBufferRef pixelBuffer,
- CMTime displayTimestamp, CMTime displayDuration,
- CFDictionaryRef frameOptions, void * sourceTrackingCallback,
- void * sourceFrameRefCon);
- void (* VTCompressionSessionInvalidate)
- (VTCompressionSessionRef session);
- VTStatus (* VTCompressionSessionSetProperty)
- (VTCompressionSessionRef session, CFStringRef propName,
- CFTypeRef propValue);
-
- VTStatus (* VTDecompressionSessionCreate)
- (CFAllocatorRef allocator,
- CMFormatDescriptionRef videoFormatDescription,
- CFTypeRef sessionOptions,
- CFDictionaryRef destinationPixelBufferAttributes,
- VTDecompressionOutputCallback * outputCallback,
- VTDecompressionSessionRef * session);
- VTStatus (* VTDecompressionSessionDecodeFrame)
- (VTDecompressionSessionRef session, CMSampleBufferRef sbuf,
- VTDecodeFrameFlags decode_flags, void *src_buf,
- VTDecodeInfoFlags *info_flags);
- void (* VTDecompressionSessionInvalidate)
- (VTDecompressionSessionRef session);
- VTStatus (* VTDecompressionSessionWaitForAsynchronousFrames)
- (VTDecompressionSessionRef session);
- VTStatus (* VTDecompressionSessionFinishDelayedFrames)
- (VTDecompressionSessionRef session);
-
- CFStringRef * kVTCompressionPropertyKey_AllowTemporalCompression;
- CFStringRef * kVTCompressionPropertyKey_AverageDataRate;
- CFStringRef * kVTCompressionPropertyKey_ExpectedFrameRate;
- CFStringRef * kVTCompressionPropertyKey_ExpectedDuration;
- CFStringRef * kVTCompressionPropertyKey_MaxKeyFrameInterval;
- CFStringRef * kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration;
- CFStringRef * kVTCompressionPropertyKey_ProfileLevel;
- CFStringRef * kVTCompressionPropertyKey_Usage;
- CFStringRef * kVTEncodeFrameOptionKey_ForceKeyFrame;
- CFStringRef * kVTProfileLevel_H264_Baseline_1_3;
- CFStringRef * kVTProfileLevel_H264_Baseline_3_0;
- CFStringRef * kVTProfileLevel_H264_Extended_5_0;
- CFStringRef * kVTProfileLevel_H264_High_5_0;
- CFStringRef * kVTProfileLevel_H264_Main_3_0;
- CFStringRef * kVTProfileLevel_H264_Main_3_1;
- CFStringRef * kVTProfileLevel_H264_Main_4_0;
- CFStringRef * kVTProfileLevel_H264_Main_4_1;
- CFStringRef * kVTProfileLevel_H264_Main_5_0;
-};
-
-struct _GstVTApiClass
-{
- GstDynApiClass parent_class;
-};
-
-GType gst_vt_api_get_type (void);
-
-GstVTApi * gst_vt_api_obtain (GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index 2c92b0f..4aa26cf 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -306,7 +306,7 @@
error:
GST_ELEMENT_ERROR (vtdec, STREAM, DECODE, (NULL),
- ("VTDecompressionSessionDecodeFrame returned %d", status));
+ ("VTDecompressionSessionDecodeFrame returned %d", (int) status));
ret = GST_FLOW_ERROR;
goto out;
}
@@ -350,7 +350,7 @@
if (status != noErr) {
GST_ELEMENT_ERROR (vtdec, RESOURCE, FAILED, (NULL),
- ("VTDecompressionSessionCreate returned %d", status));
+ ("VTDecompressionSessionCreate returned %d", (int) status));
return FALSE;
}
@@ -455,9 +455,23 @@
goto block_error;
/* create a sample buffer, the CoreMedia equivalent of GstBuffer */
- sample_timing.duration = CMTimeMake (GST_BUFFER_DURATION (buf), 1);
- sample_timing.presentationTimeStamp = CMTimeMake (GST_BUFFER_PTS (buf), 1);
- sample_timing.decodeTimeStamp = CMTimeMake (GST_BUFFER_DTS (buf), 1);
+ if (GST_BUFFER_DURATION_IS_VALID (buf))
+ sample_timing.duration = CMTimeMake (GST_BUFFER_DURATION (buf), GST_SECOND);
+ else
+ sample_timing.duration = kCMTimeInvalid;
+
+ if (GST_BUFFER_PTS_IS_VALID (buf))
+ sample_timing.presentationTimeStamp =
+ CMTimeMake (GST_BUFFER_PTS (buf), GST_SECOND);
+ else
+ sample_timing.presentationTimeStamp = kCMTimeInvalid;
+
+ if (GST_BUFFER_DTS_IS_VALID (buf))
+ sample_timing.decodeTimeStamp =
+ CMTimeMake (GST_BUFFER_DTS (buf), GST_SECOND);
+ else
+ sample_timing.decodeTimeStamp = kCMTimeInvalid;
+
time_array[0] = sample_timing;
status =
@@ -471,12 +485,12 @@
block_error:
GST_ELEMENT_ERROR (vtdec, RESOURCE, FAILED, (NULL),
- ("CMBlockBufferCreateWithMemoryBlock returned %d", status));
+ ("CMBlockBufferCreateWithMemoryBlock returned %d", (int) status));
goto out;
sample_error:
GST_ELEMENT_ERROR (vtdec, RESOURCE, FAILED, (NULL),
- ("CMSampleBufferCreate returned %d", status));
+ ("CMSampleBufferCreate returned %d", (int) status));
if (bbuf)
CFRelease (bbuf);
@@ -520,7 +534,7 @@
frame->decode_frame_number, image_buffer);
if (status != noErr) {
- GST_ERROR_OBJECT (vtdec, "Error decoding frame %d", status);
+ GST_ERROR_OBJECT (vtdec, "Error decoding frame %d", (int) status);
goto drop;
}
@@ -715,6 +729,8 @@
int width_in_mb_s = vtdec->video_info.width / dpb_mb_size;
int height_in_mb_s = vtdec->video_info.height / dpb_mb_size;
+ *length = 0;
+
if (!parse_h264_profile_and_level_from_codec_data (vtdec, codec_data,
&profile, &level))
return FALSE;
@@ -736,9 +752,17 @@
static void
gst_vtdec_set_latency (GstVtdec * vtdec)
{
- GstClockTime frame_duration = gst_util_uint64_scale (GST_SECOND,
+ GstClockTime frame_duration;
+ GstClockTime latency;
+
+ if (vtdec->video_info.fps_n == 0) {
+ GST_INFO_OBJECT (vtdec, "Framerate not known, can't set latency");
+ return;
+ }
+
+ frame_duration = gst_util_uint64_scale (GST_SECOND,
vtdec->video_info.fps_d, vtdec->video_info.fps_n);
- GstClockTime latency = frame_duration * vtdec->reorder_queue_length;
+ latency = frame_duration * vtdec->reorder_queue_length;
GST_INFO_OBJECT (vtdec, "setting latency frames:%d time:%" GST_TIME_FORMAT,
vtdec->reorder_queue_length, GST_TIME_ARGS (latency));
diff --git a/sys/applemedia/vtenc.c b/sys/applemedia/vtenc.c
index 59e57bb..e9b841f 100644
--- a/sys/applemedia/vtenc.c
+++ b/sys/applemedia/vtenc.c
@@ -17,17 +17,19 @@
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include "vtenc.h"
#include "coremediabuffer.h"
+#include "corevideobuffer.h"
#include "vtutil.h"
#define VTENC_DEFAULT_USAGE 6 /* Profile: Baseline Level: 2.1 */
#define VTENC_DEFAULT_BITRATE 768
-#define VTENC_MIN_RESET_INTERVAL (GST_SECOND / 2)
-
GST_DEBUG_CATEGORY (gst_vtenc_debug);
#define GST_CAT_DEFAULT (gst_vtenc_debug)
@@ -56,45 +58,43 @@
static void gst_vtenc_set_property (GObject * obj, guint prop_id,
const GValue * value, GParamSpec * pspec);
-static GstStateChangeReturn gst_vtenc_change_state (GstElement * element,
- GstStateChange transition);
-static gboolean gst_vtenc_sink_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
-static gboolean gst_vtenc_sink_setcaps (GstVTEnc * self, GstCaps * caps);
+static gboolean gst_vtenc_start (GstVideoEncoder * enc);
+static gboolean gst_vtenc_stop (GstVideoEncoder * enc);
+static gboolean gst_vtenc_set_format (GstVideoEncoder * enc,
+ GstVideoCodecState * input_state);
+static GstFlowReturn gst_vtenc_handle_frame (GstVideoEncoder * enc,
+ GstVideoCodecFrame * frame);
+static GstFlowReturn gst_vtenc_finish (GstVideoEncoder * enc);
+
static void gst_vtenc_clear_cached_caps_downstream (GstVTEnc * self);
-static GstFlowReturn gst_vtenc_chain (GstPad * pad, GstObject * parent,
- GstBuffer * buf);
-static gboolean gst_vtenc_src_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
static VTCompressionSessionRef gst_vtenc_create_session (GstVTEnc * self);
static void gst_vtenc_destroy_session (GstVTEnc * self,
VTCompressionSessionRef * session);
static void gst_vtenc_session_dump_properties (GstVTEnc * self,
VTCompressionSessionRef session);
-static void gst_vtenc_session_configure_usage (GstVTEnc * self,
- VTCompressionSessionRef session, gint usage);
static void gst_vtenc_session_configure_expected_framerate (GstVTEnc * self,
VTCompressionSessionRef session, gdouble framerate);
-static void gst_vtenc_session_configure_expected_duration (GstVTEnc * self,
- VTCompressionSessionRef session, gdouble duration);
static void gst_vtenc_session_configure_max_keyframe_interval (GstVTEnc * self,
VTCompressionSessionRef session, gint interval);
static void gst_vtenc_session_configure_max_keyframe_interval_duration
(GstVTEnc * self, VTCompressionSessionRef session, gdouble duration);
static void gst_vtenc_session_configure_bitrate (GstVTEnc * self,
VTCompressionSessionRef session, guint bitrate);
-static VTStatus gst_vtenc_session_configure_property_int (GstVTEnc * self,
+static OSStatus gst_vtenc_session_configure_property_int (GstVTEnc * self,
VTCompressionSessionRef session, CFStringRef name, gint value);
-static VTStatus gst_vtenc_session_configure_property_double (GstVTEnc * self,
+static OSStatus gst_vtenc_session_configure_property_double (GstVTEnc * self,
VTCompressionSessionRef session, CFStringRef name, gdouble value);
-static GstFlowReturn gst_vtenc_encode_frame (GstVTEnc * self, GstBuffer * buf);
-static VTStatus gst_vtenc_enqueue_buffer (void *data, int a2, int a3, int a4,
- CMSampleBufferRef sbuf, int a6, int a7);
+static GstFlowReturn gst_vtenc_encode_frame (GstVTEnc * self,
+ GstVideoCodecFrame * frame);
+static void gst_vtenc_enqueue_buffer (void *outputCallbackRefCon,
+ void *sourceFrameRefCon, OSStatus status, VTEncodeInfoFlags infoFlags,
+ CMSampleBufferRef sampleBuffer);
static gboolean gst_vtenc_buffer_is_keyframe (GstVTEnc * self,
CMSampleBufferRef sbuf);
+#ifndef HAVE_IOS
static GstVTEncFrame *gst_vtenc_frame_new (GstBuffer * buf,
GstVideoInfo * videoinfo);
static void gst_vtenc_frame_free (GstVTEncFrame * frame);
@@ -102,6 +102,7 @@
static void gst_pixel_buffer_release_cb (void *releaseRefCon,
const void *dataPtr, size_t dataSize, size_t numberOfPlanes,
const void *planeAddresses[]);
+#endif
static GstStaticCaps sink_caps =
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, I420 }"));
@@ -139,7 +140,7 @@
"height", GST_TYPE_INT_RANGE, min_height, max_height,
"framerate", GST_TYPE_FRACTION_RANGE,
min_fps_n, min_fps_d, max_fps_n, max_fps_d, NULL);
- if (codec_details->format_id == kVTFormatH264) {
+ if (codec_details->format_id == kCMVideoCodecType_H264) {
gst_structure_set (gst_caps_get_structure (src_caps, 0),
"stream-format", G_TYPE_STRING, "avc", NULL);
}
@@ -152,23 +153,22 @@
gst_vtenc_class_init (GstVTEncClass * klass)
{
GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
+ GstVideoEncoderClass *gstvideoencoder_class;
gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
+ gstvideoencoder_class = (GstVideoEncoderClass *) klass;
parent_class = g_type_class_peek_parent (klass);
gobject_class->get_property = gst_vtenc_get_property;
gobject_class->set_property = gst_vtenc_set_property;
- gstelement_class->change_state = gst_vtenc_change_state;
+ gstvideoencoder_class->start = gst_vtenc_start;
+ gstvideoencoder_class->stop = gst_vtenc_stop;
+ gstvideoencoder_class->set_format = gst_vtenc_set_format;
+ gstvideoencoder_class->handle_frame = gst_vtenc_handle_frame;
+ gstvideoencoder_class->finish = gst_vtenc_finish;
- g_object_class_install_property (gobject_class, PROP_USAGE,
- g_param_spec_int ("usage", "Usage",
- "Usage enumeration value",
- G_MININT, G_MAXINT, VTENC_DEFAULT_USAGE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_BITRATE,
g_param_spec_uint ("bitrate", "Bitrate",
"Target video bitrate in kbps",
@@ -180,22 +180,9 @@
gst_vtenc_init (GstVTEnc * self)
{
GstVTEncClass *klass = (GstVTEncClass *) G_OBJECT_GET_CLASS (self);
- GstElementClass *element_klass = GST_ELEMENT_CLASS (klass);
- GstElement *element = GST_ELEMENT (self);
self->details = GST_VTENC_CLASS_GET_CODEC_DETAILS (klass);
- self->sinkpad = gst_pad_new_from_template
- (gst_element_class_get_pad_template (element_klass, "sink"), "sink");
- gst_element_add_pad (element, self->sinkpad);
- gst_pad_set_event_function (self->sinkpad, gst_vtenc_sink_event);
- gst_pad_set_chain_function (self->sinkpad, gst_vtenc_chain);
-
- self->srcpad = gst_pad_new_from_template
- (gst_element_class_get_pad_template (element_klass, "src"), "src");
- gst_pad_set_event_function (self->srcpad, gst_vtenc_src_event);
- gst_element_add_pad (element, self->srcpad);
-
/* These could be controlled by properties later */
self->dump_properties = FALSE;
self->dump_attributes = FALSE;
@@ -203,31 +190,6 @@
self->session = NULL;
}
-static gint
-gst_vtenc_get_usage (GstVTEnc * self)
-{
- gint result;
-
- GST_OBJECT_LOCK (self);
- result = self->usage;
- GST_OBJECT_UNLOCK (self);
-
- return result;
-}
-
-static void
-gst_vtenc_set_usage (GstVTEnc * self, gint usage)
-{
- GST_OBJECT_LOCK (self);
-
- self->usage = usage;
-
- if (self->session != NULL)
- gst_vtenc_session_configure_usage (self, self->session, usage);
-
- GST_OBJECT_UNLOCK (self);
-}
-
static guint
gst_vtenc_get_bitrate (GstVTEnc * self)
{
@@ -260,9 +222,6 @@
GstVTEnc *self = GST_VTENC_CAST (obj);
switch (prop_id) {
- case PROP_USAGE:
- g_value_set_int (value, gst_vtenc_get_usage (self));
- break;
case PROP_BITRATE:
g_value_set_uint (value, gst_vtenc_get_bitrate (self) * 8 / 1000);
break;
@@ -279,9 +238,6 @@
GstVTEnc *self = GST_VTENC_CAST (obj);
switch (prop_id) {
- case PROP_USAGE:
- gst_vtenc_set_usage (self, g_value_get_int (value));
- break;
case PROP_BITRATE:
gst_vtenc_set_bitrate (self, g_value_get_uint (value) * 1000 / 8);
break;
@@ -291,117 +247,75 @@
}
}
-static GstStateChangeReturn
-gst_vtenc_change_state (GstElement * element, GstStateChange transition)
+static gboolean
+gst_vtenc_start (GstVideoEncoder * enc)
{
- GstVTEnc *self = GST_VTENC_CAST (element);
- GError *error = NULL;
- GstStateChangeReturn ret;
+ GstVTEnc *self = GST_VTENC_CAST (enc);
- if (transition == GST_STATE_CHANGE_NULL_TO_READY) {
- self->ctx = gst_core_media_ctx_new (GST_API_VIDEO_TOOLBOX, &error);
- if (error != NULL)
- goto api_error;
+ self->cur_outframes = g_async_queue_new ();
- self->cur_outbufs = g_ptr_array_new ();
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- if (transition == GST_STATE_CHANGE_READY_TO_NULL) {
- GST_OBJECT_LOCK (self);
-
- gst_vtenc_destroy_session (self, &self->session);
-
- if (self->options != NULL) {
- CFRelease (self->options);
- self->options = NULL;
- }
-
- self->negotiated_width = self->negotiated_height = 0;
- self->negotiated_fps_n = self->negotiated_fps_d = 0;
-
- gst_vtenc_clear_cached_caps_downstream (self);
-
- GST_OBJECT_UNLOCK (self);
-
- g_ptr_array_free (self->cur_outbufs, TRUE);
- self->cur_outbufs = NULL;
-
- g_object_unref (self->ctx);
- self->ctx = NULL;
- }
-
- return ret;
-
-api_error:
- {
- GST_ELEMENT_ERROR (self, RESOURCE, FAILED, ("API error"),
- ("%s", error->message));
- g_clear_error (&error);
- return GST_STATE_CHANGE_FAILURE;
- }
+ return TRUE;
}
static gboolean
-gst_vtenc_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+gst_vtenc_stop (GstVideoEncoder * enc)
{
- GstVTEnc *self = GST_VTENC_CAST (parent);
- gboolean forward = TRUE;
- gboolean res = TRUE;
+ GstVTEnc *self = GST_VTENC_CAST (enc);
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CAPS:
- {
- GstCaps *caps;
+ GST_OBJECT_LOCK (self);
+ gst_vtenc_destroy_session (self, &self->session);
+ GST_OBJECT_UNLOCK (self);
- gst_event_parse_caps (event, &caps);
- res = gst_vtenc_sink_setcaps (self, caps);
- }
- default:
- break;
+ if (self->options != NULL) {
+ CFRelease (self->options);
+ self->options = NULL;
}
- if (forward)
- res = gst_pad_event_default (pad, parent, event);
- return res;
+ if (self->input_state)
+ gst_video_codec_state_unref (self->input_state);
+ self->input_state = NULL;
+
+ self->negotiated_width = self->negotiated_height = 0;
+ self->negotiated_fps_n = self->negotiated_fps_d = 0;
+
+ gst_vtenc_clear_cached_caps_downstream (self);
+
+ g_async_queue_unref (self->cur_outframes);
+ self->cur_outframes = NULL;
+
+ return TRUE;
}
static gboolean
-gst_vtenc_sink_setcaps (GstVTEnc * self, GstCaps * caps)
+gst_vtenc_set_format (GstVideoEncoder * enc, GstVideoCodecState * state)
{
- GstStructure *structure;
+ GstVTEnc *self = GST_VTENC_CAST (enc);
VTCompressionSessionRef session;
+ if (self->input_state)
+ gst_video_codec_state_unref (self->input_state);
+ self->input_state = gst_video_codec_state_ref (state);
+
+ self->negotiated_width = state->info.width;
+ self->negotiated_height = state->info.height;
+ self->negotiated_fps_n = state->info.fps_n;
+ self->negotiated_fps_d = state->info.fps_d;
+ self->video_info = state->info;
+
GST_OBJECT_LOCK (self);
-
- structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "width", &self->negotiated_width);
- gst_structure_get_int (structure, "height", &self->negotiated_height);
- gst_structure_get_fraction (structure, "framerate",
- &self->negotiated_fps_n, &self->negotiated_fps_d);
-
- if (!gst_video_info_from_caps (&self->video_info, caps))
- return FALSE;
-
gst_vtenc_destroy_session (self, &self->session);
-
GST_OBJECT_UNLOCK (self);
+
session = gst_vtenc_create_session (self);
GST_OBJECT_LOCK (self);
-
self->session = session;
+ GST_OBJECT_UNLOCK (self);
if (self->options != NULL)
CFRelease (self->options);
self->options = CFDictionaryCreateMutable (NULL, 0,
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- /* renegotiate when upstream caps change */
- gst_pad_mark_reconfigure (self->srcpad);
-
- GST_OBJECT_UNLOCK (self);
-
return TRUE;
}
@@ -417,6 +331,7 @@
gboolean result;
GstCaps *caps;
GstStructure *s;
+ GstVideoCodecState *state;
if (self->caps_width == self->negotiated_width &&
self->caps_height == self->negotiated_height &&
@@ -425,7 +340,7 @@
return TRUE;
}
- caps = gst_pad_get_pad_template_caps (self->srcpad);
+ caps = gst_pad_get_pad_template_caps (GST_VIDEO_ENCODER_SRC_PAD (self));
caps = gst_caps_make_writable (caps);
s = gst_caps_get_structure (caps, 0);
gst_structure_set (s,
@@ -434,7 +349,7 @@
"framerate", GST_TYPE_FRACTION,
self->negotiated_fps_n, self->negotiated_fps_d, NULL);
- if (self->details->format_id == kVTFormatH264) {
+ if (self->details->format_id == kCMVideoCodecType_H264) {
CMFormatDescriptionRef fmt;
CFDictionaryRef atoms;
CFStringRef avccKey;
@@ -459,8 +374,11 @@
gst_buffer_unref (codec_data_buf);
}
- result = gst_pad_push_event (self->srcpad, gst_event_new_caps (caps));
- gst_caps_unref (caps);
+ state =
+ gst_video_encoder_set_output_state (GST_VIDEO_ENCODER_CAST (self), caps,
+ self->input_state);
+ gst_video_codec_state_unref (state);
+ result = gst_video_encoder_negotiate (GST_VIDEO_ENCODER_CAST (self));
self->caps_width = self->negotiated_width;
self->caps_height = self->negotiated_height;
@@ -478,52 +396,42 @@
}
static GstFlowReturn
-gst_vtenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+gst_vtenc_handle_frame (GstVideoEncoder * enc, GstVideoCodecFrame * frame)
{
- GstVTEnc *self = GST_VTENC_CAST (parent);
+ GstVTEnc *self = GST_VTENC_CAST (enc);
if (!gst_vtenc_is_negotiated (self))
goto not_negotiated;
- return gst_vtenc_encode_frame (self, buf);
+ return gst_vtenc_encode_frame (self, frame);
not_negotiated:
- gst_buffer_unref (buf);
+ gst_video_codec_frame_unref (frame);
return GST_FLOW_NOT_NEGOTIATED;
}
-static gboolean
-gst_vtenc_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
+static GstFlowReturn
+gst_vtenc_finish (GstVideoEncoder * enc)
{
- GstVTEnc *self = GST_VTENC_CAST (parent);
- gboolean ret = TRUE;
- gboolean handled = FALSE;
+ GstVTEnc *self = GST_VTENC_CAST (enc);
+ GstFlowReturn ret = GST_FLOW_OK;
+ OSStatus vt_status;
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CUSTOM_UPSTREAM:
- if (gst_event_has_name (event, "rtcp-pli")) {
- GST_OBJECT_LOCK (self);
- if (self->options != NULL) {
- GST_INFO_OBJECT (self, "received PLI, will force intra");
- CFDictionaryAddValue (self->options,
- *(self->ctx->vt->kVTEncodeFrameOptionKey_ForceKeyFrame),
- kCFBooleanTrue);
- } else {
- GST_INFO_OBJECT (self,
- "received PLI but encode not yet started, ignoring");
- }
- GST_OBJECT_UNLOCK (self);
- handled = TRUE;
- }
- break;
- default:
- break;
+ vt_status =
+ VTCompressionSessionCompleteFrames (self->session,
+ kCMTimePositiveInfinity);
+ if (vt_status != noErr) {
+ GST_WARNING_OBJECT (self, "VTCompressionSessionCompleteFrames returned %d",
+ (int) vt_status);
}
- if (handled)
- gst_event_unref (event);
- else
- ret = gst_pad_push_event (self->sinkpad, event);
+ while (g_async_queue_length (self->cur_outframes) > 0) {
+ GstVideoCodecFrame *outframe = g_async_queue_try_pop (self->cur_outframes);
+
+ ret =
+ gst_video_encoder_finish_frame (GST_VIDEO_ENCODER_CAST (self),
+ outframe);
+ }
return ret;
}
@@ -532,10 +440,8 @@
gst_vtenc_create_session (GstVTEnc * self)
{
VTCompressionSessionRef session = NULL;
- GstVTApi *vt = self->ctx->vt;
CFMutableDictionaryRef pb_attrs;
- VTCompressionOutputCallback callback;
- VTStatus status;
+ OSStatus status;
pb_attrs = CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
@@ -544,16 +450,17 @@
gst_vtutil_dict_set_i32 (pb_attrs, kCVPixelBufferHeightKey,
self->negotiated_height);
- callback.func = gst_vtenc_enqueue_buffer;
- callback.data = self;
-
- status = vt->VTCompressionSessionCreate (NULL,
+ status = VTCompressionSessionCreate (NULL,
self->negotiated_width, self->negotiated_height,
- self->details->format_id, 0, pb_attrs, 0, callback, &session);
+ self->details->format_id, NULL, pb_attrs, NULL, gst_vtenc_enqueue_buffer,
+ self, &session);
GST_INFO_OBJECT (self, "VTCompressionSessionCreate for %d x %d => %d",
- self->negotiated_width, self->negotiated_height, status);
- if (status != kVTSuccess)
+ self->negotiated_width, self->negotiated_height, (int) status);
+ if (status != noErr) {
+ GST_ERROR_OBJECT (self, "VTCompressionSessionCreate() returned: %d",
+ (int) status);
goto beach;
+ }
if (self->dump_properties) {
gst_vtenc_session_dump_properties (self, session);
@@ -561,32 +468,40 @@
self->dump_properties = FALSE;
}
- gst_vtenc_session_configure_usage (self, session, gst_vtenc_get_usage (self));
-
gst_vtenc_session_configure_expected_framerate (self, session,
(gdouble) self->negotiated_fps_n / (gdouble) self->negotiated_fps_d);
- gst_vtenc_session_configure_expected_duration (self, session,
- (gdouble) self->negotiated_fps_d / (gdouble) self->negotiated_fps_n);
- status = vt->VTCompressionSessionSetProperty (session,
- *(vt->kVTCompressionPropertyKey_ProfileLevel),
- *(vt->kVTProfileLevel_H264_Baseline_3_0));
+ /* FIXME: This is only available since OS X 10.9.6 */
+#if HAVE_IOS
+ status = VTSessionSetProperty (session,
+ kVTCompressionPropertyKey_ProfileLevel,
+ kVTProfileLevel_H264_Baseline_AutoLevel);
GST_DEBUG_OBJECT (self, "kVTCompressionPropertyKey_ProfileLevel => %d",
- status);
+ (int) status);
+#endif
- status = vt->VTCompressionSessionSetProperty (session,
- *(vt->kVTCompressionPropertyKey_AllowTemporalCompression),
- kCFBooleanTrue);
+ status = VTSessionSetProperty (session,
+ kVTCompressionPropertyKey_AllowTemporalCompression, kCFBooleanTrue);
GST_DEBUG_OBJECT (self,
- "kVTCompressionPropertyKey_AllowTemporalCompression => %d", status);
+ "kVTCompressionPropertyKey_AllowTemporalCompression => %d", (int) status);
gst_vtenc_session_configure_max_keyframe_interval (self, session, 0);
- gst_vtenc_session_configure_max_keyframe_interval_duration (self, session,
- G_MAXDOUBLE);
+ gst_vtenc_session_configure_max_keyframe_interval_duration (self, session, 0);
gst_vtenc_session_configure_bitrate (self, session,
gst_vtenc_get_bitrate (self));
+#ifdef HAVE_VIDEOTOOLBOX_10_9_6
+ if (VTCompressionSessionPrepareToEncodeFrames) {
+ status = VTCompressionSessionPrepareToEncodeFrames (session);
+ if (status != noErr) {
+ GST_ERROR_OBJECT (self,
+ "VTCompressionSessionPrepareToEncodeFrames() returned: %d",
+ (int) status);
+ }
+ }
+#endif
+
beach:
CFRelease (pb_attrs);
@@ -596,7 +511,7 @@
static void
gst_vtenc_destroy_session (GstVTEnc * self, VTCompressionSessionRef * session)
{
- self->ctx->vt->VTCompressionSessionInvalidate (*session);
+ VTCompressionSessionInvalidate (*session);
if (*session != NULL) {
CFRelease (*session);
*session = NULL;
@@ -606,7 +521,6 @@
typedef struct
{
GstVTEnc *self;
- GstVTApi *vt;
VTCompressionSessionRef session;
} GstVTDumpPropCtx;
@@ -616,7 +530,7 @@
{
gchar *name_str;
CFTypeRef prop_value;
- VTStatus status;
+ OSStatus status;
name_str = gst_vtutil_string_to_utf8 (prop_name);
if (dpc->self->dump_attributes) {
@@ -627,9 +541,8 @@
g_free (attrs_str);
}
- status = dpc->vt->VTCompressionSessionCopyProperty (dpc->session, prop_name,
- NULL, &prop_value);
- if (status == kVTSuccess) {
+ status = VTSessionCopyProperty (dpc->session, prop_name, NULL, &prop_value);
+ if (status == noErr) {
gchar *value_str;
value_str = gst_vtutil_object_to_string (prop_value);
@@ -640,7 +553,7 @@
CFRelease (prop_value);
} else {
GST_DEBUG_OBJECT (dpc->self, "%s = <failed to query: %d>",
- name_str, status);
+ name_str, (int) status);
}
g_free (name_str);
@@ -650,13 +563,12 @@
gst_vtenc_session_dump_properties (GstVTEnc * self,
VTCompressionSessionRef session)
{
- GstVTDumpPropCtx dpc = { self, self->ctx->vt, session };
+ GstVTDumpPropCtx dpc = { self, session };
CFDictionaryRef dict;
- VTStatus status;
+ OSStatus status;
- status = self->ctx->vt->VTCompressionSessionCopySupportedPropertyDictionary
- (session, &dict);
- if (status != kVTSuccess)
+ status = VTSessionCopySupportedPropertyDictionary (session, &dict);
+ if (status != noErr)
goto error;
CFDictionaryApplyFunction (dict,
(CFDictionaryApplierFunction) gst_vtenc_session_dump_property, &dpc);
@@ -669,27 +581,11 @@
}
static void
-gst_vtenc_session_configure_usage (GstVTEnc * self,
- VTCompressionSessionRef session, gint usage)
-{
- gst_vtenc_session_configure_property_int (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_Usage), usage);
-}
-
-static void
gst_vtenc_session_configure_expected_framerate (GstVTEnc * self,
VTCompressionSessionRef session, gdouble framerate)
{
gst_vtenc_session_configure_property_double (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_ExpectedFrameRate), framerate);
-}
-
-static void
-gst_vtenc_session_configure_expected_duration (GstVTEnc * self,
- VTCompressionSessionRef session, gdouble duration)
-{
- gst_vtenc_session_configure_property_double (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_ExpectedDuration), duration);
+ kVTCompressionPropertyKey_ExpectedFrameRate, framerate);
}
static void
@@ -697,8 +593,7 @@
VTCompressionSessionRef session, gint interval)
{
gst_vtenc_session_configure_property_int (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_MaxKeyFrameInterval),
- interval);
+ kVTCompressionPropertyKey_MaxKeyFrameInterval, interval);
}
static void
@@ -706,8 +601,7 @@
VTCompressionSessionRef session, gdouble duration)
{
gst_vtenc_session_configure_property_double (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration),
- duration);
+ kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, duration);
}
static void
@@ -715,77 +609,145 @@
VTCompressionSessionRef session, guint bitrate)
{
gst_vtenc_session_configure_property_int (self, session,
- *(self->ctx->vt->kVTCompressionPropertyKey_AverageDataRate), bitrate);
+ kVTCompressionPropertyKey_AverageBitRate, bitrate);
}
-static VTStatus
+static OSStatus
gst_vtenc_session_configure_property_int (GstVTEnc * self,
VTCompressionSessionRef session, CFStringRef name, gint value)
{
CFNumberRef num;
- VTStatus status;
+ OSStatus status;
gchar name_str[128];
num = CFNumberCreate (NULL, kCFNumberIntType, &value);
- status = self->ctx->vt->VTCompressionSessionSetProperty (session, name, num);
+ status = VTSessionSetProperty (session, name, num);
CFRelease (num);
CFStringGetCString (name, name_str, sizeof (name_str), kCFStringEncodingUTF8);
- GST_DEBUG_OBJECT (self, "%s(%d) => %d", name_str, value, status);
+ GST_DEBUG_OBJECT (self, "%s(%d) => %d", name_str, value, (int) status);
return status;
}
-static VTStatus
+static OSStatus
gst_vtenc_session_configure_property_double (GstVTEnc * self,
VTCompressionSessionRef session, CFStringRef name, gdouble value)
{
CFNumberRef num;
- VTStatus status;
+ OSStatus status;
gchar name_str[128];
num = CFNumberCreate (NULL, kCFNumberDoubleType, &value);
- status = self->ctx->vt->VTCompressionSessionSetProperty (session, name, num);
+ status = VTSessionSetProperty (session, name, num);
CFRelease (num);
CFStringGetCString (name, name_str, sizeof (name_str), kCFStringEncodingUTF8);
- GST_DEBUG_OBJECT (self, "%s(%f) => %d", name_str, value, status);
+ GST_DEBUG_OBJECT (self, "%s(%f) => %d", name_str, value, (int) status);
return status;
}
static GstFlowReturn
-gst_vtenc_encode_frame (GstVTEnc * self, GstBuffer * buf)
+gst_vtenc_encode_frame (GstVTEnc * self, GstVideoCodecFrame * frame)
{
- GstVTApi *vt = self->ctx->vt;
CMTime ts, duration;
GstCoreMediaMeta *meta;
CVPixelBufferRef pbuf = NULL;
- VTStatus vt_status;
+ OSStatus vt_status;
GstFlowReturn ret = GST_FLOW_OK;
guint i;
+ gboolean forced_keyframe = FALSE;
- self->cur_inbuf = buf;
-
- ts = CMTimeMake (GST_TIME_AS_MSECONDS (GST_BUFFER_TIMESTAMP (buf)), 1000);
- duration = CMTimeMake
- (GST_TIME_AS_MSECONDS (GST_BUFFER_DURATION (buf)), 1000);
-
- meta = gst_buffer_get_core_media_meta (buf);
- if (meta != NULL) {
- pbuf = gst_core_media_buffer_get_pixel_buffer (buf);
+ if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame)) {
+ if (self->options != NULL) {
+ GST_INFO_OBJECT (self, "received force-keyframe-event, will force intra");
+ CFDictionaryAddValue (self->options,
+ kVTEncodeFrameOptionKey_ForceKeyFrame, kCFBooleanTrue);
+ forced_keyframe = TRUE;
+ } else {
+ GST_INFO_OBJECT (self,
+ "received force-keyframe-event but encode not yet started, ignoring");
+ }
}
+ ts = CMTimeMake (frame->pts, GST_SECOND);
+ if (frame->duration != GST_CLOCK_TIME_NONE)
+ duration = CMTimeMake (frame->duration, GST_SECOND);
+ else
+ duration = kCMTimeInvalid;
+
+ meta = gst_buffer_get_core_media_meta (frame->input_buffer);
+ if (meta != NULL) {
+ pbuf = gst_core_media_buffer_get_pixel_buffer (frame->input_buffer);
+ }
+#ifdef HAVE_IOS
if (pbuf == NULL) {
- GstVTEncFrame *frame;
+ GstVideoFrame inframe, outframe;
+ GstBuffer *outbuf;
+ OSType pixel_format_type;
CVReturn cv_ret;
- frame = gst_vtenc_frame_new (buf, &self->video_info);
- if (!frame)
+ /* FIXME: iOS has special stride requirements that we don't know yet.
+ * Copy into a newly allocated pixelbuffer for now. Probably makes
+ * sense to create a buffer pool around these at some point.
+ */
+
+ switch (GST_VIDEO_INFO_FORMAT (&self->video_info)) {
+ case GST_VIDEO_FORMAT_I420:
+ pixel_format_type = kCVPixelFormatType_420YpCbCr8Planar;
+ break;
+ case GST_VIDEO_FORMAT_NV12:
+ pixel_format_type = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange;
+ break;
+ default:
+ goto cv_error;
+ }
+
+ if (!gst_video_frame_map (&inframe, &self->video_info, frame->input_buffer,
+ GST_MAP_READ))
+ goto cv_error;
+
+ cv_ret =
+ CVPixelBufferCreate (NULL, self->negotiated_width,
+ self->negotiated_height, pixel_format_type, NULL, &pbuf);
+
+ if (cv_ret != kCVReturnSuccess) {
+ gst_video_frame_unmap (&inframe);
+ goto cv_error;
+ }
+
+ outbuf = gst_core_video_buffer_new ((CVBufferRef) pbuf, &self->video_info);
+ if (!gst_video_frame_map (&outframe, &self->video_info, outbuf,
+ GST_MAP_WRITE)) {
+ gst_video_frame_unmap (&inframe);
+ gst_buffer_unref (outbuf);
+ CVPixelBufferRelease (pbuf);
+ goto cv_error;
+ }
+
+ if (!gst_video_frame_copy (&outframe, &inframe)) {
+ gst_video_frame_unmap (&inframe);
+ gst_buffer_unref (outbuf);
+ CVPixelBufferRelease (pbuf);
+ goto cv_error;
+ }
+
+ gst_buffer_unref (outbuf);
+ gst_video_frame_unmap (&inframe);
+ gst_video_frame_unmap (&outframe);
+ }
+#else
+ if (pbuf == NULL) {
+ GstVTEncFrame *vframe;
+ CVReturn cv_ret;
+
+ vframe = gst_vtenc_frame_new (frame->input_buffer, &self->video_info);
+ if (!vframe)
goto cv_error;
{
- const size_t num_planes = GST_VIDEO_FRAME_N_PLANES (&frame->videoframe);
+ const size_t num_planes = GST_VIDEO_FRAME_N_PLANES (&vframe->videoframe);
void *plane_base_addresses[GST_VIDEO_MAX_PLANES];
size_t plane_widths[GST_VIDEO_MAX_PLANES];
size_t plane_heights[GST_VIDEO_MAX_PLANES];
@@ -795,13 +757,13 @@
for (i = 0; i < num_planes; i++) {
plane_base_addresses[i] =
- GST_VIDEO_FRAME_PLANE_DATA (&frame->videoframe, i);
- plane_widths[i] = GST_VIDEO_FRAME_COMP_WIDTH (&frame->videoframe, i);
- plane_heights[i] = GST_VIDEO_FRAME_COMP_HEIGHT (&frame->videoframe, i);
+ GST_VIDEO_FRAME_PLANE_DATA (&vframe->videoframe, i);
+ plane_widths[i] = GST_VIDEO_FRAME_COMP_WIDTH (&vframe->videoframe, i);
+ plane_heights[i] = GST_VIDEO_FRAME_COMP_HEIGHT (&vframe->videoframe, i);
plane_bytes_per_row[i] =
- GST_VIDEO_FRAME_COMP_STRIDE (&frame->videoframe, i);
+ GST_VIDEO_FRAME_COMP_STRIDE (&vframe->videoframe, i);
plane_bytes_per_row[i] =
- GST_VIDEO_FRAME_COMP_STRIDE (&frame->videoframe, i);
+ GST_VIDEO_FRAME_COMP_STRIDE (&vframe->videoframe, i);
}
switch (GST_VIDEO_INFO_FORMAT (&self->video_info)) {
@@ -819,110 +781,114 @@
self->negotiated_width, self->negotiated_height,
pixel_format_type,
frame,
- GST_VIDEO_FRAME_SIZE (&frame->videoframe),
+ GST_VIDEO_FRAME_SIZE (&vframe->videoframe),
num_planes,
plane_base_addresses,
plane_widths,
plane_heights,
- plane_bytes_per_row, gst_pixel_buffer_release_cb, frame, NULL, &pbuf);
+ plane_bytes_per_row, gst_pixel_buffer_release_cb, vframe, NULL,
+ &pbuf);
if (cv_ret != kCVReturnSuccess) {
- gst_vtenc_frame_free (frame);
+ gst_vtenc_frame_free (vframe);
goto cv_error;
}
}
}
+#endif
- GST_OBJECT_LOCK (self);
+ /* We need to unlock the stream lock here because
+ * it can wait for gst_vtenc_enqueue_buffer() to
+ * handle a buffer... which will take the stream
+ * lock from another thread and then deadlock */
+ GST_VIDEO_ENCODER_STREAM_UNLOCK (self);
+ vt_status = VTCompressionSessionEncodeFrame (self->session,
+ pbuf, ts, duration, self->options,
+ GINT_TO_POINTER (frame->system_frame_number), NULL);
+ GST_VIDEO_ENCODER_STREAM_LOCK (self);
- self->expect_keyframe = CFDictionaryContainsKey (self->options,
- *(vt->kVTEncodeFrameOptionKey_ForceKeyFrame));
- if (self->expect_keyframe)
- gst_vtenc_clear_cached_caps_downstream (self);
-
- vt_status = self->ctx->vt->VTCompressionSessionEncodeFrame (self->session,
- pbuf, ts, duration, self->options, NULL, NULL);
-
- if (vt_status != 0) {
- GST_WARNING_OBJECT (self, "VTCompressionSessionEncodeFrame returned %d",
- vt_status);
+ /* Only force one keyframe */
+ if (forced_keyframe) {
+ CFDictionaryRemoveValue (self->options,
+ kVTEncodeFrameOptionKey_ForceKeyFrame);
}
- self->ctx->vt->VTCompressionSessionCompleteFrames (self->session,
- kCMTimeInvalid);
+ if (vt_status != noErr) {
+ GST_WARNING_OBJECT (self, "VTCompressionSessionEncodeFrame returned %d",
+ (int) vt_status);
+ }
- GST_OBJECT_UNLOCK (self);
+ gst_video_codec_frame_unref (frame);
CVPixelBufferRelease (pbuf);
- self->cur_inbuf = NULL;
- gst_buffer_unref (buf);
- if (self->cur_outbufs->len > 0) {
- meta =
- gst_buffer_get_core_media_meta (g_ptr_array_index (self->cur_outbufs,
- 0));
- if (!gst_vtenc_negotiate_downstream (self, meta->sample_buf))
- ret = GST_FLOW_NOT_NEGOTIATED;
- }
+ i = 0;
+ while (g_async_queue_length (self->cur_outframes) > 0) {
+ GstVideoCodecFrame *outframe = g_async_queue_try_pop (self->cur_outframes);
- for (i = 0; i != self->cur_outbufs->len; i++) {
- GstBuffer *buf = g_ptr_array_index (self->cur_outbufs, i);
-
- if (ret == GST_FLOW_OK) {
- ret = gst_pad_push (self->srcpad, buf);
- } else {
- gst_buffer_unref (buf);
+ /* Try to renegotiate once */
+ if (i == 0) {
+ meta = gst_buffer_get_core_media_meta (outframe->output_buffer);
+ if (!gst_vtenc_negotiate_downstream (self, meta->sample_buf)) {
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ gst_video_codec_frame_unref (outframe);
+ break;
+ }
}
+
+ ret =
+ gst_video_encoder_finish_frame (GST_VIDEO_ENCODER_CAST (self),
+ outframe);
+ i++;
}
- g_ptr_array_set_size (self->cur_outbufs, 0);
return ret;
cv_error:
{
- self->cur_inbuf = NULL;
- gst_buffer_unref (buf);
-
+ gst_video_codec_frame_unref (frame);
return GST_FLOW_ERROR;
}
}
-static VTStatus
-gst_vtenc_enqueue_buffer (void *data, int a2, int a3, int a4,
- CMSampleBufferRef sbuf, int a6, int a7)
+static void
+gst_vtenc_enqueue_buffer (void *outputCallbackRefCon,
+ void *sourceFrameRefCon,
+ OSStatus status,
+ VTEncodeInfoFlags infoFlags, CMSampleBufferRef sampleBuffer)
{
- GstVTEnc *self = data;
+ GstVTEnc *self = outputCallbackRefCon;
gboolean is_keyframe;
- GstBuffer *buf;
+ GstVideoCodecFrame *frame;
+
+ if (status != noErr) {
+ GST_ELEMENT_ERROR (self, LIBRARY, ENCODE, (NULL), ("Failed to encode: %d",
+ (int) status));
+ goto beach;
+ }
/* This may happen if we don't have enough bitrate */
- if (sbuf == NULL)
+ if (sampleBuffer == NULL)
goto beach;
- is_keyframe = gst_vtenc_buffer_is_keyframe (self, sbuf);
- if (self->expect_keyframe) {
- if (!is_keyframe)
- goto beach;
- CFDictionaryRemoveValue (self->options,
- *(self->ctx->vt->kVTEncodeFrameOptionKey_ForceKeyFrame));
+ is_keyframe = gst_vtenc_buffer_is_keyframe (self, sampleBuffer);
+
+ frame =
+ gst_video_encoder_get_frame (GST_VIDEO_ENCODER_CAST (self),
+ GPOINTER_TO_INT (sourceFrameRefCon));
+
+ if (is_keyframe) {
+ GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
+ gst_vtenc_clear_cached_caps_downstream (self);
}
- self->expect_keyframe = FALSE;
/* We are dealing with block buffers here, so we don't need
* to enable the use of the video meta API on the core media buffer */
- buf = gst_core_media_buffer_new (sbuf, FALSE);
- gst_buffer_copy_into (buf, self->cur_inbuf, GST_BUFFER_COPY_TIMESTAMPS,
- 0, -1);
- if (is_keyframe) {
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
- } else {
- GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
- }
+ frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE);
- g_ptr_array_add (self->cur_outbufs, buf);
+ g_async_queue_push (self->cur_outframes, frame);
beach:
- return kVTSuccess;
+ return;
}
static gboolean
@@ -945,6 +911,7 @@
return result;
}
+#ifndef HAVE_IOS
static GstVTEncFrame *
gst_vtenc_frame_new (GstBuffer * buf, GstVideoInfo * video_info)
{
@@ -974,9 +941,9 @@
size_t dataSize, size_t numberOfPlanes, const void *planeAddresses[])
{
GstVTEncFrame *frame = (GstVTEncFrame *) releaseRefCon;
-
gst_vtenc_frame_free (frame);
}
+#endif
static void
gst_vtenc_register (GstPlugin * plugin,
@@ -989,7 +956,7 @@
(GClassInitFunc) gst_vtenc_class_init,
NULL,
NULL,
- sizeof (GstVTEncClass),
+ sizeof (GstVTEnc),
0,
(GInstanceInitFunc) gst_vtenc_init,
};
@@ -999,7 +966,8 @@
type_name = g_strdup_printf ("vtenc_%s", codec_details->element_name);
- type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &type_info, 0);
+ type =
+ g_type_register_static (GST_TYPE_VIDEO_ENCODER, type_name, &type_info, 0);
g_type_set_qdata (type, GST_VTENC_CODEC_DETAILS_QDATA,
(gpointer) codec_details);
@@ -1013,7 +981,7 @@
}
static const GstVTEncoderDetails gst_vtenc_codecs[] = {
- {"H.264", "h264", "video/x-h264", kVTFormatH264},
+ {"H.264", "h264", "video/x-h264", kCMVideoCodecType_H264},
};
void
diff --git a/sys/applemedia/vtenc.h b/sys/applemedia/vtenc.h
index 776e04b..6ba70df 100644
--- a/sys/applemedia/vtenc.h
+++ b/sys/applemedia/vtenc.h
@@ -22,8 +22,7 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-
-#include "coremediactx.h"
+#include <VideoToolbox/VideoToolbox.h>
G_BEGIN_DECLS
@@ -44,28 +43,22 @@
const gchar * name;
const gchar * element_name;
const gchar * mimetype;
- VTFormatId format_id;
+ CMVideoCodecType format_id;
};
struct _GstVTEncClass
{
- GstElementClass parent_class;
+ GstVideoEncoderClass parent_class;
};
struct _GstVTEnc
{
- GstElement parent;
+ GstVideoEncoder parent;
const GstVTEncoderDetails * details;
- GstPad * sinkpad;
- GstPad * srcpad;
-
- gint usage;
guint bitrate;
- GstCoreMediaCtx * ctx;
-
gboolean dump_properties;
gboolean dump_attributes;
@@ -73,13 +66,12 @@
gint negotiated_fps_n, negotiated_fps_d;
gint caps_width, caps_height;
gint caps_fps_n, caps_fps_d;
+ GstVideoCodecState *input_state;
GstVideoInfo video_info;
VTCompressionSessionRef session;
CFMutableDictionaryRef options;
- GstBuffer * cur_inbuf;
- GPtrArray * cur_outbufs;
- gboolean expect_keyframe;
+ GAsyncQueue * cur_outframes;
};
void gst_vtenc_register_elements (GstPlugin * plugin);
diff --git a/sys/applemedia/vth264decbin.h b/sys/applemedia/vth264decbin.h
deleted file mode 100644
index 1c039f0..0000000
--- a/sys/applemedia/vth264decbin.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_VTH264DECBIN_H__
-#define __GST_VTH264DECBIN_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_VT_H264_DEC_BIN (gst_vt_h264_dec_bin_get_type())
-#define GST_VT_H264_DEC_BIN(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_VT_H264_DEC_BIN, \
- GstVTH264DecBin))
-#define GST_VT_H264_DEC_BIN_CAST(obj) \
- ((GstVTH264DecBin *) (obj))
-#define GST_VT_H264_DEC_BIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VT_H264_DEC_BIN, \
- GstVTH264DecBinClass))
-#define GST_IS_VT_H264_DEC_BIN(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_VT_H264_DEC_BIN))
-#define GST_IS_VT_H264_DEC_BIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VT_H264_DEC_BIN))
-
-typedef struct _GstVTH264DecBin GstVTH264DecBin;
-typedef struct _GstVTH264DecBinPrivate GstVTH264DecBinPrivate;
-typedef struct _GstVTH264DecBinClass GstVTH264DecBinClass;
-
-struct _GstVTH264DecBin
-{
- GstBin parent;
-
- GstVTH264DecBinPrivate * priv;
-};
-
-struct _GstVTH264DecBinClass
-{
- GstBinClass parent_class;
-};
-
-GType gst_vt_h264_dec_bin_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_VTH264DECBIN_H__ */
diff --git a/sys/applemedia/vth264encbin.h b/sys/applemedia/vth264encbin.h
deleted file mode 100644
index 6bfb54a..0000000
--- a/sys/applemedia/vth264encbin.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.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_VTH264ENCBIN_H__
-#define __GST_VTH264ENCBIN_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_VT_H264_ENC_BIN (gst_vt_h264_enc_bin_get_type())
-#define GST_VT_H264_ENC_BIN(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_VT_H264_ENC_BIN, \
- GstVTH264EncBin))
-#define GST_VT_H264_ENC_BIN_CAST(obj) \
- ((GstVTH264EncBin *) (obj))
-#define GST_VT_H264_ENC_BIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VT_H264_ENC_BIN, \
- GstVTH264EncBinClass))
-#define GST_IS_VT_H264_ENC_BIN(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_VT_H264_ENC_BIN))
-#define GST_IS_VT_H264_ENC_BIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VT_H264_ENC_BIN))
-
-typedef struct _GstVTH264EncBin GstVTH264EncBin;
-typedef struct _GstVTH264EncBinPrivate GstVTH264EncBinPrivate;
-typedef struct _GstVTH264EncBinClass GstVTH264EncBinClass;
-
-struct _GstVTH264EncBin
-{
- GstBin parent;
-
- GstVTH264EncBinPrivate * priv;
-};
-
-struct _GstVTH264EncBinClass
-{
- GstBinClass parent_class;
-};
-
-GType gst_vt_h264_enc_bin_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_VTH264ENCBIN_H__ */
diff --git a/tests/check/libs/vc1parser.c b/tests/check/libs/vc1parser.c
index 1d00e19..cb0bce7 100644
--- a/tests/check/libs/vc1parser.c
+++ b/tests/check/libs/vc1parser.c
@@ -1227,7 +1227,7 @@
assert_equals_int (seq_layer.struct_a.vert_size, 48);
assert_equals_int (seq_layer.struct_a.horiz_size, 48);
- assert_equals_int (seq_layer.struct_b.level, GST_VC1_LEVEL_HIGH);
+ assert_equals_int (seq_layer.struct_b.level, GST_VC1_LEVEL_MEDIUM);
assert_equals_int (seq_layer.struct_b.cbr, 1);
assert_equals_int (seq_layer.struct_b.framerate, 29);
assert_equals_int (seq_layer.struct_b.hrd_buffer, 0);
diff --git a/tests/examples/gl/sdl/sdlshare.c b/tests/examples/gl/sdl/sdlshare.c
index 9d8906d..bc54eae 100644
--- a/tests/examples/gl/sdl/sdlshare.c
+++ b/tests/examples/gl/sdl/sdlshare.c
@@ -288,10 +288,7 @@
#else
SDL_VERSION (&info.version);
SDL_GetWMInfo (&info);
- /* FIXME: This display is different to the one that SDL uses to create the
- * GL context inside SDL_SetVideoMode() above which fails on Intel hardware
- */
- sdl_display = info.info.x11.display;
+ sdl_display = info.info.x11.gfxdisplay;
sdl_win = info.info.x11.window;
sdl_gl_context = glXGetCurrentContext ();
glXMakeCurrent (sdl_display, None, 0);
diff --git a/win32/common/config.h b/win32/common/config.h
index 7f33f20..4c5db01 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 "2014-09-24"
+#define GST_PACKAGE_RELEASE_DATETIME "2014-11-06"
/* Define if static plugins should be built */
#undef GST_PLUGIN_BUILD_STATIC
@@ -547,6 +547,9 @@
/* Define if building with VideoToolbox */
#undef HAVE_VIDEOTOOLBOX
+/* Define if building with VideoToolbox >= 10.9.6 */
+#undef HAVE_VIDEOTOOLBOX_10_9_6
+
/* Define to enable vo-aacenc library (used by vo-aacenc). */
#undef HAVE_VOAACENC
@@ -637,7 +640,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.4.3"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.4.4"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-bad"
@@ -646,7 +649,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.4.3"
+#define PACKAGE_VERSION "1.4.4"
/* directory where plugins are located */
#ifdef _DEBUG
@@ -686,7 +689,7 @@
#undef USE_EGL_RPI
/* Version number of package */
-#define VERSION "1.4.3"
+#define VERSION "1.4.4"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */