Imported Upstream version 1.8.2
diff --git a/ChangeLog b/ChangeLog
index 681d04d..2cb78ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,711 @@
-=== release 1.8.1 ===
+=== release 1.8.2 ===
-2016-04-20 Sebastian Dröge <slomo@coaxion.net>
+2016-06-09 Sebastian Dröge <slomo@coaxion.net>
* configure.ac:
- releasing 1.8.1
+ releasing 1.8.2
+
+2016-06-09 10:05:34 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * po/hr.po:
+ * po/pt_BR.po:
+ * po/sk.po:
+ po: Update translations
+
+2016-06-09 09:30:48 +0900 Seungha Yang <sh.yang@lge.com>
+
+ * gst/flv/gstflvdemux.c:
+ flvdemux: Fix unref assertion failure
+ Fix unref assertion failure
+ https://bugzilla.gnome.org/show_bug.cgi?id=767424
+
+2016-06-07 20:53:34 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/libpng/gstpngdec.c:
+ pngdec: Wait for segment event before checking it
+ The heuristic to choose between packetise or not was changed to use the
+ segment format. The problem is that this change is reading the segment
+ during the caps event handling. The segment event will only be sent
+ after. That prevented the decoder to go in packetize mode, and avoid
+ useless parsing.
+ https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-06 17:00:22 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/jpeg/gstjpegdec.c:
+ jpegdec: Wait for segment event before checking it
+ The heuristic to choose between packetise or not was change to use the
+ segment format. The problem is that this change is reading the segment
+ during the caps event handling. The segment event will only be sent
+ after. That prevented the decoder to go in packetize mode, and avoid
+ useless parsing.
+ https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-07 16:42:09 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * sys/v4l2/gstv4l2videodec.c:
+ v4l2videodec: Keep part of the input buffer
+ Instead of completely getting rid of the input buffer, copy
+ the metadata, the flags and the timestamp into an empty buffer.
+ This way the decoder base class can copy that information again
+ to the output buffer.
+ https://bugzilla.gnome.org/show_bug.cgi?id=758424
+
+2016-06-07 16:04:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * sys/v4l2/gstv4l2object.c:
+ * sys/v4l2/gstv4l2object.h:
+ * sys/v4l2/gstv4l2sink.c:
+ * sys/v4l2/gstv4l2src.c:
+ * sys/v4l2/gstv4l2transform.c:
+ * sys/v4l2/gstv4l2videodec.c:
+ v4l2: Add an error return to _try/_set_format
+ This way one can easily ignore errors. Previously, error were always
+ posted ont he bus.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766172
+
+2016-06-07 16:01:55 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * sys/v4l2/v4l2-utils.c:
+ * sys/v4l2/v4l2-utils.h:
+ v4l2-util: Introduce GstV4l2Error
+ This is to allow returning an error that can easily be sent as
+ message to the application if the element needs it. Using this
+ also allow ignoring errors.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766172
+
+2016-06-07 12:41:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * sys/v4l2/gstv4l2src.c:
+ v4l2src: Avoid decide allocation on active pool
+ v4l2src will renegotiate only if the format have changed. As of now,
+ it's not possible to change the allocationw without resetting the
+ camera. To avoid unwanted side effect, simply keep the old allocation
+ if no renegotiation is taking place. This fixes assertion and possible
+ failures in USERPTR or DMABUF import mode (when using downstream pools).
+ https://bugzilla.gnome.org/show_bug.cgi?id=754042
+
+2015-09-02 11:48:29 +0200 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/v4l2/gstv4l2videodec.c:
+ v4l2videodec: use decoder stop command instead of queueing empty buffers
+ Only if the decoder stop command fails, keep queueing empty buffers to
+ signal end of stream as before.
+ https://bugzilla.gnome.org/show_bug.cgi?id=733864
+
+2014-12-12 14:31:36 +0100 Peter Seiderer <ps.report@gmx.net>
+
+ * sys/v4l2/gstv4l2videodec.c:
+ v4l2videodec: add gst_v4l2_decoder_cmd helper
+ https://bugzilla.gnome.org/show_bug.cgi?id=733864
+
+2015-01-28 12:07:58 +0100 Enrico Jorns <ejo@pengutronix.de>
+
+ * sys/v4l2/gstv4l2transform.c:
+ gstv4l2transform: format fixation for preferring passthrough
+ * If outgoing format is unfixated, try to set it to input format.
+ * Call gst_caps_fixate () at end of fixation routine
+ https://bugzilla.gnome.org/show_bug.cgi?id=766719
+
+2016-05-20 12:49:53 +0200 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/v4l2/gstv4l2transform.c:
+ v4l2transform: allow to change pixel aspect ratio
+ Scalers may change width and height independently,
+ allow to change pixel aspect ratio.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766712
+
+2016-05-20 12:32:25 +0200 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/v4l2/gstv4l2transform.c:
+ v4l2transform: fix scaling in case of fixed pixel aspect ratio
+ To change pixel aspect ratio from DAR to PAR, the necessary scaling factor
+ is DAR/PAR, not DAR*PAR.
+ For good measure, add debug output similar to the fixed-width and
+ fixed-height cases.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766711
+
+2016-05-13 14:58:41 +0200 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/v4l2/gstv4l2videodec.c:
+ v4l2videodec: use visible size, not coded size, for downstream negotiation filter
+ gst_v4l2_probe_caps() returns the coded size, not the visible size. Subtract
+ the known padding from probed caps with the coded size before using them as
+ filter for caps negotiation with downstream elements.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766382
+
+2016-01-27 09:57:38 +0100 Andreas Naumann <anaumann@ultratronik.de>
+
+ * sys/v4l2/gstv4l2sink.c:
+ v4l2sink: Use V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY if driver advertises it.
+ On modern kernels, the G/S_FMT ioctls will always fail using
+ V4L2_BUF_TYPE_VIDEO_OVERLAY with VFL_DIR_TX (e.g. real overlay out drivers)
+ since this is not the intented use (rather rx, according to v4l2 API doc).
+ Probably this is why the Video Output Overlay interface was created, so if
+ the driver advertises it we might as well use.
+ For old kernels (pre 2012) the old way might still work so keeping this for
+ compatibility.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761165
+
+2016-06-06 18:52:01 +0100 Kieran Bingham <kieran@bingham.xyz>
+
+ * sys/v4l2/gstv4l2object.c:
+ v4l2object: Use non-deprecated V4L2 type for RGB15
+ Support for the updated V4L2_PIX_FMT_XRGB555 was added in commit
+ 2538fee2fd8fdb74b05f0a511281bc4707e7cc44 however, when setting the format
+ for use in v4l2 ioctls, the old deprecated format is still used. Convert
+ this to the new accepted format type, as the preferred format.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767300
+
+2016-05-31 21:34:04 +0200 Josep Torra <adn770@gmail.com>
+
+ * sys/v4l2/gstv4l2bufferpool.c:
+ v4l2src: check for valid size on raw video buffers
+ Discard buffers that doesn't contain enough data when dealing
+ with raw video inputs.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767086
+
+2016-02-10 19:56:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * sys/v4l2/gstv4l2deviceprovider.c:
+ v4l2: Don't leak v4l2 objects and props on probe errors
+
+2016-05-31 17:04:32 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Only activate segments and send SEGMENT events if we have streams
+ But in that case also remove the pending newsegment event, otherwise we would
+ later send a possibly outdated event.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767071
+
+2016-05-31 17:10:36 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Use the demuxer segment instead of a new one for MSS streams
+ Upstream might have told us something about the to be expected segment, so
+ let's use that information instead of coming up with a [0,-1] segment.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767071
+
+2016-05-31 16:38:34 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Don't override TIME segments from upstream that we just saw
+ The point of d8fb7a9c96b108814beeaa0e63f818d4648c7fe9 was to not have any
+ spurious segments stored for later if we do BYTES->TIME conversion, but
+ overriding any TIME segments from upstream does not make any sense.
+ See https://bugzilla.gnome.org/show_bug.cgi?id=763165
+ https://bugzilla.gnome.org/show_bug.cgi?id=767071
+
+2016-03-15 03:25:26 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * gst/rtp/gstrtpjpegdepay.c:
+ rtpjpegdepay: Don't send invalid frames downstream after packet loss or a DISCONT
+ After clearing the adapter due to a DISCONT, as might happen when some packet(s)
+ have been lost, the depayloader was pushing data into the adapter (which had no
+ header due to the clear), creating a headerless frame out of it, and sending it
+ downstream. The downstream decoder would then usually ignore it; unless there
+ were lots of DISCONTs from the jitterbuffer in which case the decoder would reach
+ its max_errors limit and throw an element error. Now we just discard that data.
+ It is probaby not worth trying to salvage this data because non-progressive
+ jpeg does not degrade gracefully and makes the video unwatchable even with
+ low packet loss such as 3-5%.
+
+2016-05-25 17:11:13 +0200 Pierre Lamot <pierre.lamot@openwide.fr>
+
+ * gst/rtp/gstrtpj2kpay.c:
+ rtpj2kpay: Fix buffer memory leak
+ Input buffer memory was not unmapped
+ https://bugzilla.gnome.org/show_bug.cgi?id=766870
+
+2016-05-18 12:12:15 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * sys/v4l2/gstv4l2object.c:
+ v4l2object: fix caps leak
+ gst_v4l2_object_probe_caps() was taking an extra ref on the returned
+ caps for no reason.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766610
+
+2016-05-20 11:12:44 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/avi/gstavidemux.c:
+ * gst/avi/gstavidemux.h:
+ avidemux: Pass through seek event seqnums in all SEGMENT/EOS events and SEGMENT_DONE messages/events
+ See https://bugzilla.gnome.org/show_bug.cgi?id=765935
+
+2016-05-20 11:15:44 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Set seek event seqnum on all SEGMENT events
+ Some were forgotten.
+ See https://bugzilla.gnome.org/show_bug.cgi?id=765935
+
+2016-05-20 10:56:52 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/matroska/matroska-demux.c:
+ matroskademux: Set seek event seqnum in EOS and SEGMENT_DONE messages/events
+ Also actually store the seqnum in pull mode seeks.
+ See https://bugzilla.gnome.org/show_bug.cgi?id=765935
+
+2016-05-17 13:40:38 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst/deinterlace/gstdeinterlace.c:
+ deinterlace: fix caps leak
+ The caps returned by gst_pad_get_current_caps() was never unreffed when
+ not early returning.
+ Fix a leak with the elements/deinterlace test.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766558
+
+2016-01-25 16:25:51 +0100 Mikhail Fludkov <misha@pexip.com>
+
+ * gst/rtpmanager/rtpsession.c:
+ * tests/check/Makefile.am:
+ * tests/check/elements/rtpsession.c:
+ rtpsession: don't act on suspicious BYE RTCP
+ Some endpoints (like Tandberg E20) can send BYE packet containing our
+ internal SSRC. I this case we would detect SSRC collision and get rid
+ of the source at some point. But because we are still sending packets
+ with that SSRC the source will be recreated immediately.
+ This brand new internal source will not have some variables incorrectly
+ set in its state. For example 'seqnum-base` and `clock-rate` values will be
+ -1.
+ The fix is not to act on BYE RTCP if it contains internal or unknown
+ SSRC.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762219
+
+2016-05-12 11:52:09 +0900 Seungha Yang <sh.yang@lge.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Parsing elst box based on version
+ segment_duration and media_time should be parsed based on version
+ of elst box. Specification defines that an elst box with version 1
+ has uint64 and int64 values for segment_duration and media_time,
+ respectively.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766301
+
+2016-05-15 12:30:50 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rtpmanager/rtpsession.c:
+ rtpsession: Take the lock already when reading the other stats, not just for the hash table
+ https://bugzilla.gnome.org/show_bug.cgi?id=766025
+
+2016-05-12 14:43:43 +0200 Patricia Muscalu <patricia@axis.com>
+
+ * gst/auparse/gstauparse.c:
+ * gst/auparse/gstauparse.h:
+ auparse: Fix sticky event misordering warning
+ Make sure that src pad has caps before sending segment event.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766359
+
+2016-05-19 15:36:57 +0900 Seungha Yang <sh.yang@lge.com>
+
+ * gst/matroska/matroska-demux.c:
+ matroskademux: don't hold object lock whilst pushing out headers
+ matroskademux would take the GST_OBJECT_LOCK in
+ - gst_matroska_demux_push_codec_data_all()
+ - gst_matroska_demux_query()
+ Some parse element such as FLAC checks upstream seekability, and
+ there is some use cases that matroska-demux is linked to a parse element
+ (e.g.,FLAC format) without intermediate elements (e.g., queue).
+ In this case, matroska-demux never returns from _push_codec_data_all()
+ because the parser can return only after it receives the response to
+ the upstream query, but that's not going to happen because it's
+ deadlocked.
+ Elements must not hold the object lock whilst pushing out events
+ or data.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766645
+
+2016-05-19 12:43:01 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/soup/gstsouphttpclientsink.c:
+ souphttpclientsink: Set sent_buffers and streamheader_buffers to NULL after freeing
+ Otherwise we might use an already freed list later and crash or worse.
+
+2016-05-15 22:07:14 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/multifile/gstsplitmuxpartreader.c:
+ splitmuxsrc: Connect to demux signals before activating
+ Fix a race in splitmuxsrc by properly connecting to the
+ demuxer signals we're interested in *before* setting it running.
+
+2016-05-14 23:39:22 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ * gst/multifile/gstsplitmuxsink.h:
+ splitmuxsink: Use GstBin async-handling instead of our own.
+ Set the async-handling property on GstBin to let it manage
+ async-handling instead of the local handling from the previous
+ commit. Works because of #174a5e in core
+
+2016-05-14 18:32:52 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ * gst/multifile/gstsplitmuxsink.h:
+ splitmuxsink: Hide internal async state changes.
+ When switching fragments, hide the async-start/async-done
+ messages from the parent bin, as otherwise we sometimes (very rarely)
+ hang in PAUSED instead of returning / continuing to PLAYING
+ state.
+
+2016-05-13 21:20:28 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ splitmuxsink: Remove stray carriage-return from debug
+
+2015-04-30 14:43:04 +0200 Jesper Larsen <knorr.jesper@gmail.com>
+
+ * gst/avi/gstavimux.c:
+ avimux: Do not write index and header if idx is NULL
+ Fixes criticals with e.g.
+ videotestsrc num-buffers=1 ! identity drop-probability=1.0 ! avimux ! fakesink
+ https://bugzilla.gnome.org/show_bug.cgi?id=748700
+
+2016-05-03 11:45:01 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * gst/rtpmanager/gstrtpjitterbuffer.c:
+ * tests/check/elements/rtpjitterbuffer.c:
+ rtpjitterbuffer: Fix stall when receiving already lost packet
+ When a packet arrives that has already been considered lost as part of a
+ large gap the "lost timer" for this will be cancelled. If the remaining
+ packets of this large gap never arrives, there will be missing entries
+ in the queue and the loop function will keep waiting for these packets
+ to arrive and never push another packet, effectively stalling the
+ pipeline.
+ The proposed fix conciders parts of a large gap definitely lost (since
+ they are calculated from latency) and ignores the late arrivals.
+ In practice the issue is rare since large gaps are scheduled immediately,
+ and for the stall to happen the late arrival needs to be processed
+ before this times out.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765933
+
+2016-05-11 09:28:13 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rtpmanager/rtpsession.c:
+ rtpsession: Don't notify about stats property changes while taking the session lock
+ The signal handlers might want to actually get the value of the stats
+ property, which would take the session lock again and deadlock.
+ This was introduced by 2e960e70750a0cb7e1117d0c09d08597866a29ee.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766025
+
+2016-05-05 14:18:21 +0200 Miguel París Díaz <mparisdiaz@gmail.com>
+
+ * gst/rtpmanager/rtpsession.c:
+ rtpsession: Take session lock when creating stats
+ The access to the session hash table must happen while the session lock is
+ taken, otherwise another thread might modify the hash table while we're
+ creating the stats.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766025
+
+2016-05-04 09:30:27 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/dv/gstdvdec.c:
+ * ext/dv/gstdvdemux.c:
+ dv: Use correct pixel-aspect-ratio values
+ The previous ones resulted in odd display aspect ratios and were different
+ from the ones used by e.g. ffmpeg. The new ones now result in display aspect
+ ratios of 4:3 and 16:9.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765946
+
+2016-05-03 21:17:01 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: update segment when new duration is found
+ Otherwise the old segment will have a shorter stop time and would
+ cause the stream to end too early.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765805
+
+2016-05-04 11:37:29 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: dismember activate_segment into 2 parts
+ One that updates and push a new segment, the other will move the
+ stream to the new segment starting position
+ https://bugzilla.gnome.org/show_bug.cgi?id=765805
+
+2016-05-04 11:15:20 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ splitmuxsink: Fix deadlock case when source reaches EOS
+ https://bugzilla.gnome.org/show_bug.cgi?id=765072
+
+2016-04-11 10:54:38 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/udp/gstudpsrc.c:
+ udpsrc: Always bind to ANY when address is a multicast address and not only on Windows
+ For IPv6 addresses, binding to a multicast group does not work on Linux
+ either. Always bind to ANY and then later join the multicast group.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764679
+
+2016-04-28 16:24:52 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/gstqtmux.c:
+ * gst/isomp4/gstqtmuxmap.c:
+ qtmux: Allow MPEG-1 Layer 1 and 2 in addition to 3 in MP4
+ Via the MPEG-4 Part 3 spec we can support the other layers too.
+ Also correct the samples per frame calculation for MP3 if it's MPEG-2 or
+ MPEG-2.5.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765725
+
+2016-04-29 15:04:11 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ * gst/isomp4/qtdemux.h:
+ qtdemux: Store the segment sequence number in the EOS events and SEGMENT_DONE events/message
+ Also instead of storing it per stream, store it globally in the demuxer. It's
+ the same for each stream anyway.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765806
+
+2016-04-27 20:46:34 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rtsp/gstrtspsrc.c:
+ * gst/rtsp/gstrtspsrc.h:
+ rtspsrc: Update caps for TCP whenever they change
+ We only changed them for UDP so far, which caused the wrong seqnum-base and
+ other information to be passed to rtpjitterbuffer/etc when seeking. This
+ usually wasn't that much of a problem as the code there is robust enough, but
+ every now and then it causes us to drop up to 32756 packets before we
+ continue doing anything meaningful.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765689
+
+2016-04-27 20:33:38 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rtpmanager/gstrtpjitterbuffer.c:
+ rtpjitterbuffer: Ensure to not take caps with the wrong pt for getting the clock-rate
+ Especially the caps on the pad might be out of date, and the new caps would be
+ provided for the current pt via the request-pt-map signal.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765689
+
+2016-04-27 18:27:17 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/rtsp/gstrtspsrc.c:
+ rtspsrc: Don't propagate spurious state change returns from internal elements further
+ We handle them inside rtspsrc and override them in all other cases anyway, so
+ do the same for "internal" state changes like PAUSED->PAUSED and
+ PLAYING->PLAYING.
+ This keeps unexpected NO_PREROLL to confuse state changes in GstBin.
+ See also https://bugzilla.gnome.org/show_bug.cgi?id=760532
+ https://bugzilla.gnome.org/show_bug.cgi?id=765689
+
+2016-05-01 15:09:27 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+ * gst/avi/gstavimux.c:
+ avimux: set audio header rate according to calculated bps in stop_file
+ ... now that set_fields is no longer called there by
+ e538608b3f90539003de21c1db238f3c9b946e30
+
+2015-11-26 13:15:06 +0100 Dimitrios Katsaros <patcherwork@gmail.com>
+
+ * sys/v4l2/v4l2_calls.c:
+ v4l2: Change warning handling to break infinite message loop
+ v4l2src can cause an "infinite message loop" when a base control exposed as a
+ property is not provided by the device. In these cases, if in the warning message
+ handling for the bus, the GST_DEBUG_BIN_TO_DOT_FILE* category of functions are used,
+ the src lookup causes a new warning to be posted on the bus, causing a loop.
+ This patch changes the warning for these controls so they are not posted on the bus.
+ https://bugzilla.gnome.org/show_bug.cgi?id=758703
+
+2016-04-25 15:03:14 +0200 Mats Lindestam <matslm@axis.com>
+
+ * gst/udp/gstmultiudpsink.c:
+ multiudpsink: Allow setting "socket-v6" without setting "socket" too
+ https://bugzilla.gnome.org/show_bug.cgi?id=764897
+
+2016-04-27 13:53:00 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/avi/gstavimux.c:
+ avimux: Actually store the largest audio chunk size for the VBR case of MP2/MP3
+ 3ea338ce271e1f6a96d2ed49d4472b091f6f8b7e changed avimux to do that, but it
+ never actually kept track of the max audio chunk for MP3 and MP2. These are
+ knowing the hdr.scale only after parsing the frames instead of at setcaps
+ time.
+
+2016-04-27 14:09:03 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/avi/gstavimux.c:
+ avimux: Don't override maximum audio chunk size with the scale again just before writing it
+ set_fields() should only be called in the beginning, otherwise we will never
+ remember the maximum audio chunk size and write a wrong block align... which
+ then causes wrong timestamps and other problems.
+
+2016-04-22 15:02:16 +0100 Mario Sanchez Prada <mario@endlessm.com>
+
+ * ext/vpx/gstvpxenc.c:
+ vpxenc: Properly handle frames with too low duration
+ When a frame's duration is too low, calling gst_util_uint64_scale()
+ to scale its value can result into it being truncated to zero, which
+ will cause the vpx encoder to return an VPX_CODEC_INVALID_PARAM error
+ when trying to encode.
+ To prevent this from happening, we simply ignore the duration when
+ encoding if it becomes zero after scaling, logging a warning message.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765391
+
+2016-04-22 15:48:08 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/deinterlace/gstdeinterlace.c:
+ deinterlace: fix description of linear interlacing method
+
+2016-04-21 14:08:19 -0300 Thibault Saunier <tsaunier@gnome.org>
+
+ * gst/flv/gstflvmux.c:
+ flv: Handle the case where we do not get any CollectData in handle_buffer
+ https://bugzilla.gnome.org/show_bug.cgi?id=765320
+
+2016-02-09 17:17:09 +0000 Alex Ashley <bugzilla@ashley-family.net>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: support seeking of CENC encrypted streams
+ When playing a stream that has been protected by DASH CENC, playback
+ will fail if a seek is performed. Qtdemux produces the error "stream
+ is protected using cenc, but no cenc protection system information
+ has been found" and playback stops.
+ The problem is that gst_qtdemux_reset() gets called as part of the
+ FLUSH during a seek. This function frees the protection_system_ids
+ array. When gst_qtdemux_configure_protected_caps() is called after the
+ seek has completed, the protection_system_ids array is empty and
+ qtdemux is unable to create the correct output caps for the protected
+ stream.
+ This commit changes it to only free the protection_system_ids on
+ hard resets.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761787
+
+2016-04-11 22:41:20 +0900 Seungha Yang <sh.yang@lge.com>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Do not use unreliable framerate
+ timescale/1 is unreliable value for framerate. Due to downstream
+ element usually use framerate generated by qtdemux, let it be omitted
+ until the framerate can be reliably calculated.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764733
+
+2016-04-21 12:53:33 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/isomp4/qtdemux.c:
+ * gst/isomp4/qtdemux.h:
+ Revert "qtdemux: expose streams with first moof for fragmented format"
+ This reverts commit d8bb6687ea251570c331038279a43d448167d6ad.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764733
+
+=== release 1.8.1 ===
+
+2016-04-20 18:16:25 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * configure.ac:
+ * docs/plugins/gst-plugins-good-plugins.args:
+ * docs/plugins/inspect/plugin-1394.xml:
+ * docs/plugins/inspect/plugin-aasink.xml:
+ * docs/plugins/inspect/plugin-alaw.xml:
+ * docs/plugins/inspect/plugin-alpha.xml:
+ * docs/plugins/inspect/plugin-alphacolor.xml:
+ * docs/plugins/inspect/plugin-apetag.xml:
+ * docs/plugins/inspect/plugin-audiofx.xml:
+ * docs/plugins/inspect/plugin-audioparsers.xml:
+ * docs/plugins/inspect/plugin-auparse.xml:
+ * docs/plugins/inspect/plugin-autodetect.xml:
+ * docs/plugins/inspect/plugin-avi.xml:
+ * docs/plugins/inspect/plugin-cacasink.xml:
+ * docs/plugins/inspect/plugin-cairo.xml:
+ * docs/plugins/inspect/plugin-cutter.xml:
+ * docs/plugins/inspect/plugin-debug.xml:
+ * docs/plugins/inspect/plugin-deinterlace.xml:
+ * docs/plugins/inspect/plugin-dtmf.xml:
+ * docs/plugins/inspect/plugin-dv.xml:
+ * docs/plugins/inspect/plugin-effectv.xml:
+ * docs/plugins/inspect/plugin-equalizer.xml:
+ * docs/plugins/inspect/plugin-flac.xml:
+ * docs/plugins/inspect/plugin-flv.xml:
+ * docs/plugins/inspect/plugin-flxdec.xml:
+ * docs/plugins/inspect/plugin-gdkpixbuf.xml:
+ * docs/plugins/inspect/plugin-goom.xml:
+ * docs/plugins/inspect/plugin-goom2k1.xml:
+ * docs/plugins/inspect/plugin-icydemux.xml:
+ * docs/plugins/inspect/plugin-id3demux.xml:
+ * docs/plugins/inspect/plugin-imagefreeze.xml:
+ * docs/plugins/inspect/plugin-interleave.xml:
+ * docs/plugins/inspect/plugin-isomp4.xml:
+ * docs/plugins/inspect/plugin-jack.xml:
+ * docs/plugins/inspect/plugin-jpeg.xml:
+ * docs/plugins/inspect/plugin-level.xml:
+ * docs/plugins/inspect/plugin-matroska.xml:
+ * docs/plugins/inspect/plugin-mulaw.xml:
+ * docs/plugins/inspect/plugin-multifile.xml:
+ * docs/plugins/inspect/plugin-multipart.xml:
+ * docs/plugins/inspect/plugin-navigationtest.xml:
+ * docs/plugins/inspect/plugin-oss4.xml:
+ * docs/plugins/inspect/plugin-ossaudio.xml:
+ * docs/plugins/inspect/plugin-png.xml:
+ * docs/plugins/inspect/plugin-pulseaudio.xml:
+ * docs/plugins/inspect/plugin-replaygain.xml:
+ * docs/plugins/inspect/plugin-rtp.xml:
+ * docs/plugins/inspect/plugin-rtpmanager.xml:
+ * docs/plugins/inspect/plugin-rtsp.xml:
+ * docs/plugins/inspect/plugin-shapewipe.xml:
+ * docs/plugins/inspect/plugin-shout2send.xml:
+ * docs/plugins/inspect/plugin-smpte.xml:
+ * docs/plugins/inspect/plugin-soup.xml:
+ * docs/plugins/inspect/plugin-spectrum.xml:
+ * docs/plugins/inspect/plugin-speex.xml:
+ * docs/plugins/inspect/plugin-taglib.xml:
+ * docs/plugins/inspect/plugin-udp.xml:
+ * docs/plugins/inspect/plugin-video4linux2.xml:
+ * docs/plugins/inspect/plugin-videobox.xml:
+ * docs/plugins/inspect/plugin-videocrop.xml:
+ * docs/plugins/inspect/plugin-videofilter.xml:
+ * docs/plugins/inspect/plugin-videomixer.xml:
+ * docs/plugins/inspect/plugin-vpx.xml:
+ * docs/plugins/inspect/plugin-wavenc.xml:
+ * docs/plugins/inspect/plugin-wavpack.xml:
+ * docs/plugins/inspect/plugin-wavparse.xml:
+ * docs/plugins/inspect/plugin-ximagesrc.xml:
+ * docs/plugins/inspect/plugin-y4menc.xml:
+ * gst-plugins-good.doap:
+ * win32/common/config.h:
+ Release 1.8.1
+
+2016-04-20 18:07:35 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * po/af.po:
+ * po/az.po:
+ * po/bg.po:
+ * po/ca.po:
+ * po/cs.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/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:
+ * po/zh_HK.po:
+ * po/zh_TW.po:
+ Update .po files
2016-04-20 15:31:19 +0300 Sebastian Dröge <sebastian@centricular.com>
diff --git a/NEWS b/NEWS
index bdac78a..953c54f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,24 +1,25 @@
-### 1.8.1
+### 1.8.2
-The first 1.8 bug-fix release (1.8.1) was released on 20 April 2016.
+The first 1.8 bug-fix release (1.8.2) was released on 9 June 2016.
This release only contains bugfixes and it should be safe to update from 1.8.0.
-#### Major bugfixes in 1.8.1
+#### Major bugfixes in 1.8.2
- - Fix app compilation with Android NDK r11 and newer
- - Fix compilation of nvenc plugin against latest NVIDIA SDK 6.0
- - Fix regression in avdeinterlace
- - Fix memory corruption in scaletempo element with S16 input
- - Fix regression in qtdemux with MSE streams
- - Fix glitches at the start with all audio sinks except for pulsesink
- - Fix regression with encrypted HLS streams
- - Fix automatic multithreaded decoding of VP8/9 video
- - Fix deadlock in HTTP adaptive streams when scrub-seeking
- - Fix regression in RTSP source with SRTP
- - Add support for SRTP rollover counters in the RTSP source
- - Add support for HiDPI ("Retina") screens in caopengllayersink
- - ... and many more!
+ - Fix vp8enc and flacenc segmentation faults on Windows
+ - Fix Android build failure due to BSD sed on OS X
+ - Fix Android build failure with applications targetting API > 20
+ - Fix playback of live MS SmoothStreaming streams
+ - Fix various issues with vtdec and caopengllayersink on OS X
+ - Fix severe performance degradation in various image decoders
+ - Fix sample rate negotiation in opusdec
+ - Fix regression in typefind, causing deadlocks in some situations
+ - Fix mpegtsmux to set PTS on all output buffers again
+ - Fix extraction of frame dimensions from SDP in RTP JPEG depayloader
+ - Fix failure in v4l2videodec when setting of format fails after starting
+ - ... and many, many more!
-For a full list of bugfixes see [Bugzilla][buglist-1.8.1].
+For a full list of bugfixes see [Bugzilla][buglist-1.8.2]. Note that this is
+not the full list of changes. For the full list of changes please refer to the
+GIT logs or ChangeLogs of the particular modules.
-[buglist-1.8.1]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=117422&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.1
+[buglist-1.8.2]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=130196&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.2
diff --git a/RELEASE b/RELEASE
index 99617cf..19882e1 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,11 +1,11 @@
-Release notes for GStreamer Good Plugins 1.8.1
+Release notes for GStreamer Good Plugins 1.8.2
-The GStreamer team is proud to announce the first bugfix release in the stable
+The GStreamer team is proud to announce the second bugfix release in the stable
1.8 release series of your favourite cross-platform multimedia framework!
-This release only contains bugfixes and it is safe to update from 1.8.0. For a
+This release only contains bugfixes and it is safe to update from 1.8.1. For a
full list of bugfixes see Bugzilla.
@@ -55,21 +55,42 @@
Bugs fixed in this release
+ * 766025 : rtpsession: race condition accessing ssrcs hash table
+ * 733864 : v4l2videodec: Implement EOS handling through V4L2_DEC_CMD_STOP
+ * 736252 : gdkpixbufdec: packetized mode logic
+ * 748700 : avimux: stopping file without index fails
+ * 754042 : v4l2src: Asserts on renegotiation with USERPTR
+ * 758424 : v4l2videodec: Keep the input buffers, they are needed to copy metadata
+ * 758703 : v4l2src: gst_v4l2_set_attribute warning messages cause infinite loop with .dot dump
+ * 761165 : Setting overlay parameters on v4l2sink fails
+ * 761787 : qtdemux: seek fails with CENC encrypted streams
+ * 762219 : rtpsession: don't act on suspicious BYE RTCP
+ * 764679 : IPv6 UDP stream to site-local multicast address
* 764733 : qtdemux: Regression in YouTube TV tests in WebKit MSE after fix for #760779
- * 763711 : splitmuxsink: deadlock when one streams doesn't have regular buffers
- * 730540 : rtspsrc: parse crypto sessions to support rollover counters
- * 744612 : splitmuxsink: add property for specifing maximum number of files to store
- * 757569 : rtspsrc: avoid potentially overflowing expression
- * 761345 : rtpjpegpay: Allow different quantization tables for components 2 and 3
- * 762893 : splitmuxsink critical assertion when changing from null to ready
- * 763780 : flvdemux: don't emit pad-added until caps are ready
- * 763973 : qtdemux: Fix qtdemux memory leak
- * 764169 : vp9dec: Dogslow VP9 4k playback with libvpx, works fine with avdec_vp9
- * 764798 : rtspsrc Critical errors when connecting with TLS / rtsps
- * 764870 : qtdemux: Fix parsing segment duration of empty edit list box
- * 764889 : rtpjitterbuffer: Drops wrong number of packets with drop-on-latency=true
+ * 764897 : Using non IPv6-socket in IPv6 scope
* 765072 : splitmuxsink: Sometimes creates a small one-frame file after EOS
- * 765116 : scaletempo: memory corruption
+ * 765320 : flvmux: segfault when no buffers have arrived before EOS
+ * 765391 : vpxenc: Handle frames with too low duration correctly
+ * 765689 : rtspsrc: Various problems related to seeking causing scrub seeking to fail
+ * 765725 : qtmux: Allow MPEG-1 Layer 1 and 2 in addition to 3 in MP4
+ * 765805 : qtdemux: Only first fragment played for fragmented mp4 files recorded with non-seekable sink
+ * 765806 : qtdemux: Store the segment sequence number in the EOS events and STREAM_DONE events/message
+ * 765933 : rtpjitterbuffer: Fix stall when receiving already lost packet
+ * 765946 : dv: Uses different pixel-aspect-ratio than gst-libav
+ * 766172 : v4l2videodec: [Regressions] Should not fail if S_FMT(CAPTURE) fail after STREAMON(CAPTURE)
+ * 766359 : auparse: sticky event misordering, got 'segment' before 'caps'
+ * 766382 : v4l2videodec: use visible size, not coded size, for downstream negotiation filter
+ * 766558 : deinterlace: fix caps leak
+ * 766610 : v4l2object: fix caps leak
+ * 766645 : matroskademux: don't hold object lock whilst pushing out headers, might lead to query deadlock
+ * 766711 : v4l2transform: scaling is broken in case of fixed pixel aspect ratio
+ * 766712 : v4l2transform should allow to change pixel aspect ratio
+ * 766719 : v4l2transform: Does not fully fixate the caps
+ * 766868 : qtdemux: Segments start at 0 on live MSS time-based streams, ignoring the start time configured upstream
+ * 766870 : rtpj2kpay: leaks input buffer
+ * 767300 : v4l2object uses deprecated RGB15 V4L2 format code
+ * 767424 : flvdemux: Fix unref assertion failure
+ * 767086 : v4l2src: pushes incomplete raw video buffers
==== Download ====
@@ -106,16 +127,31 @@
Contributors to this release
- * Aleix Conchillo Flaqué
- * Damian Ziobro
+ * Alex Ashley
+ * Andreas Naumann
+ * Dimitrios Katsaros
+ * Enrico Jorns
+ * Guillaume Desmottes
* Havard Graff
* Jan Schmidt
- * Jihae Yi
- * Jimmy Ohn
+ * Jesper Larsen
+ * Josep Torra
+ * Kieran Bingham
+ * Mario Sanchez Prada
+ * Mark Nauwelaerts
+ * Mats Lindestam
+ * Miguel París Díaz
+ * Mikhail Fludkov
* Nicolas Dufresne
- * Paolo Pettinato
+ * Nirbheek Chauhan
+ * Patricia Muscalu
+ * Peter Seiderer
+ * Philipp Zabel
+ * Pierre Lamot
* Sebastian Dröge
* Seungha Yang
* Thiago Santos
+ * Thibault Saunier
+ * Tim-Philipp Müller
* Xavier Claessens
\ No newline at end of file
diff --git a/config.guess b/config.guess
index 1659250..0967f2a 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2015 Free Software Foundation, Inc.
+# Copyright 1992-2016 Free Software Foundation, Inc.
-timestamp='2015-08-20'
+timestamp='2016-04-02'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
# Please send patches to <config-patches@gnu.org>.
@@ -50,7 +50,7 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -237,6 +237,10 @@
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+ exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
exit ;;
@@ -268,42 +272,42 @@
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
+ UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
+ UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
+ UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
+ UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
+ UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
+ UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
+ UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
+ UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
+ UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
@@ -376,16 +380,16 @@
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
- SUN_ARCH="i386"
+ SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
- SUN_ARCH="x86_64"
+ SUN_ARCH=x86_64
fi
fi
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -410,7 +414,7 @@
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
@@ -635,13 +639,13 @@
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
@@ -680,11 +684,11 @@
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
+ if [ ${HP_ARCH} = hppa2.0w ]
then
eval $set_cc_for_build
@@ -697,12 +701,12 @@
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
- HP_ARCH="hppa2.0w"
+ HP_ARCH=hppa2.0w
else
- HP_ARCH="hppa64"
+ HP_ARCH=hppa64
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -807,14 +811,14 @@
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -896,7 +900,7 @@
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
@@ -919,7 +923,7 @@
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
@@ -965,6 +969,9 @@
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
+ k1om:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
@@ -1120,7 +1127,7 @@
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
+ # prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
@@ -1269,6 +1276,9 @@
SX-8R:SUPER-UX:*:*)
echo sx8r-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
@@ -1282,9 +1292,9 @@
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
@@ -1306,7 +1316,7 @@
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
+ if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
@@ -1337,7 +1347,7 @@
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = "386"; then
+ if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
@@ -1379,7 +1389,7 @@
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
exit ;;
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
@@ -1390,6 +1400,9 @@
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
+ exit ;;
esac
cat >&2 <<EOF
@@ -1399,9 +1412,9 @@
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 1acc966..8d39c4b 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2015 Free Software Foundation, Inc.
+# Copyright 1992-2016 Free Software Foundation, Inc.
-timestamp='2015-08-20'
+timestamp='2016-03-30'
# 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
@@ -33,7 +33,7 @@
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,8 +53,7 @@
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
@@ -68,7 +67,7 @@
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -521,7 +520,7 @@
basic_machine=i386-pc
os=-aros
;;
- asmjs)
+ asmjs)
basic_machine=asmjs-unknown
;;
aux)
@@ -1383,7 +1382,7 @@
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
@@ -1399,7 +1398,8 @@
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+ | -onefs* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1531,6 +1531,8 @@
;;
-nacl*)
;;
+ -ios)
+ ;;
-none)
;;
*)
diff --git a/configure b/configure
index 1aeef2c..8a9dcab 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 Good Plug-ins 1.8.1.
+# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.8.2.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='GStreamer Good Plug-ins'
PACKAGE_TARNAME='gst-plugins-good'
-PACKAGE_VERSION='1.8.1'
-PACKAGE_STRING='GStreamer Good Plug-ins 1.8.1'
+PACKAGE_VERSION='1.8.2'
+PACKAGE_STRING='GStreamer Good Plug-ins 1.8.2'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -1964,7 +1964,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 Good Plug-ins 1.8.1 to adapt to many kinds of systems.
+\`configure' configures GStreamer Good Plug-ins 1.8.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2037,7 +2037,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.8.1:";;
+ short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.8.2:";;
esac
cat <<\_ACEOF
@@ -2413,7 +2413,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer Good Plug-ins configure 1.8.1
+GStreamer Good Plug-ins configure 1.8.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3224,7 +3224,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 Good Plug-ins $as_me 1.8.1, which was
+It was created by GStreamer Good Plug-ins $as_me 1.8.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4206,7 +4206,7 @@
# Define the identity of the package.
PACKAGE='gst-plugins-good'
- VERSION='1.8.1'
+ VERSION='1.8.2'
cat >>confdefs.h <<_ACEOF
@@ -4417,9 +4417,9 @@
- PACKAGE_VERSION_MAJOR=$(echo 1.8.1 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 1.8.1 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 1.8.1 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 1.8.2 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 1.8.2 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 1.8.2 | cut -d'.' -f3)
@@ -4430,7 +4430,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 1.8.1 | cut -d'.' -f4)
+ NANO=$(echo 1.8.2 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -9271,10 +9271,10 @@
done
- GST_CURRENT=801
+ GST_CURRENT=802
GST_REVISION=0
- GST_AGE=801
- GST_LIBVERSION=801:0:801
+ GST_AGE=802
+ GST_LIBVERSION=802:0:802
@@ -36873,7 +36873,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GStreamer Good Plug-ins $as_me 1.8.1, which was
+This file was extended by GStreamer Good Plug-ins $as_me 1.8.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -36939,7 +36939,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 Good Plug-ins config.status 1.8.1
+GStreamer Good Plug-ins config.status 1.8.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 49d8400..6650bf1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
dnl initialize autoconf
dnl releases only do -Wall, git and prerelease does -Werror too
dnl use a three digit version number for releases, and four for git/pre
-AC_INIT([GStreamer Good Plug-ins],[1.8.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good])
+AC_INIT([GStreamer Good Plug-ins],[1.8.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good])
AG_GST_INIT
@@ -43,7 +43,7 @@
[GStreamer API Version])
AG_GST_LIBTOOL_PREPARE
-AS_LIBTOOL(GST, 801, 0, 801)
+AS_LIBTOOL(GST, 802, 0, 802)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.8.0
diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args
index cea99c9..ef4dd9b 100644
--- a/docs/plugins/gst-plugins-good-plugins.args
+++ b/docs/plugins/gst-plugins-good-plugins.args
@@ -1005,7 +1005,7 @@
<FLAGS>rw</FLAGS>
<NICK>User Agent</NICK>
<BLURB>The User-Agent string to send to the server.</BLURB>
-<DEFAULT>"GStreamer/1.8.1"</DEFAULT>
+<DEFAULT>"GStreamer/1.8.2"</DEFAULT>
</ARG>
<ARG>
@@ -20135,7 +20135,7 @@
<FLAGS>rw</FLAGS>
<NICK>Method</NICK>
<BLURB>Deinterlace Method.</BLURB>
-<DEFAULT>Television: Full resolution</DEFAULT>
+<DEFAULT>Linear</DEFAULT>
</ARG>
<ARG>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html
index 6474f9c..b32fa0c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html
@@ -290,7 +290,7 @@
</p></li>
</ul></div>
<p>Flags: Read / Write</p>
-<p>Default value: Television: Full resolution</p>
+<p>Default value: Linear</p>
</div>
<hr>
<div class="refsect2">
diff --git a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
index cd90ab5..62cfe66 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
@@ -236,7 +236,7 @@
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
-<td>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</td>
</tr>
<tr>
<td><p><span class="term"></span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
index 9761c3b..146c911 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
index 7c7f3da..f22bde7 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
index d084505..f9d6fa8 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
index 6a4aee4..8b7ea9f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
index c6f95a4..c85a0dd 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
index 874aeb6..972d1fe 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
index 3c12527..f239402 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-audioparsers.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-audioparsers.html
index 55e1014..1652b57 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audioparsers.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audioparsers.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
index e76ee66..5c30127 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
index b6409c6..439fafb 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
index 0042770..099d605 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
index d18c511..8a10e2b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
index cfa7dd3..13bd4ad 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
index 3c29f01..2c172f4 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
index c471a5c..19ce6b5 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
index 926bab3..36ef007 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
index f6cd330..71f419a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
index 89d2523..ff2199b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
index bb24376..c730a4c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
index 6716aca..bb5aec5 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
index 65f39b3..9f29f98 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
index 555ee61..3d41d7c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
index bca685b..8b1585d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
index cef1fd2..184fe0e 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
index c179239..652fd61 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
index e3728d4..c447635 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
index 5ad59e6..0c75332 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
index 7ec489b..a84b5b8 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
index 8d3e520..cbf895b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
index 7d6c8d8..cfabcd1 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
index 4886e4f..54dfbb3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
index aaa3fdf..0a09fe9 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
index fed911c..c1f9125 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
index 06be337..2a5778f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
index 3107176..b11f5b0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
index 5dd0d3e..2039788 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
index d983d48..27ae862 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
index 70880f6..7948a57 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
index e4f0542..ef1ad3d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
index af4e9b1..f17b51b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
index b1ea2a6..8a08e90 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
index 8582a74..7ffdbbb 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
index 1de97d5..d274ecc 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
index 3cc2b58..3bbde94 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
index 1e406a3..43d385b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
index c00219f..65c2a02 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
index ad1f705..ab5a60a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
index 1878db0..90d368d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
index 82bd0d4..11c27f4 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
index ebd505b..8600c1c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
index 4d74e1d..7113a57 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
index 9a57ba4..19fd4aa 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
index 21a64f5..d7598d2 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
index 5bc9e81..160efd2 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
index 8747440..6ca782c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
index 1e4ded7..d80c028 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
index 0ad09fd..ff5fc04 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
index 168e38a..8d629b3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
index 751f28c..1149414 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
index ea7ee30..7e9bd1d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
index bf5dddb..703cd98 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
index 32e8d46..8f6205a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
index ed7fc9a..83b3d5b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
index 6819635..e80a4ec 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
index f049df2..07a69a1 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
index 25089b9..5ec4f4d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.1</td>
+<td>1.8.2</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
index 260d56a..b7c69f6 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
@@ -688,7 +688,7 @@
<pre class="programlisting"> “user-agent” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
<p>The User-Agent string to send to the server.</p>
<p>Flags: Read / Write</p>
-<p>Default value: "GStreamer/1.8.1"</p>
+<p>Default value: "GStreamer/1.8.2"</p>
</div>
<hr>
<div class="refsect2">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 95d9334..89034a3 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 Good Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for GStreamer Good Plugins 1.0 (1.8.1)
+ for GStreamer Good Plugins 1.0 (1.8.2)
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/</a>.
</p></div>
diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml
index 7455b7f..22fe11c 100644
--- a/docs/plugins/inspect/plugin-1394.xml
+++ b/docs/plugins/inspect/plugin-1394.xml
@@ -3,7 +3,7 @@
<description>Source for video data via IEEE1394 interface</description>
<filename>../../ext/raw1394/.libs/libgst1394.so</filename>
<basename>libgst1394.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-aasink.xml b/docs/plugins/inspect/plugin-aasink.xml
index e1c1a2f..3a6c461 100644
--- a/docs/plugins/inspect/plugin-aasink.xml
+++ b/docs/plugins/inspect/plugin-aasink.xml
@@ -3,7 +3,7 @@
<description>ASCII Art video sink</description>
<filename>../../ext/aalib/.libs/libgstaasink.so</filename>
<basename>libgstaasink.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alaw.xml b/docs/plugins/inspect/plugin-alaw.xml
index afa32a3..7ee670c 100644
--- a/docs/plugins/inspect/plugin-alaw.xml
+++ b/docs/plugins/inspect/plugin-alaw.xml
@@ -3,7 +3,7 @@
<description>ALaw audio conversion routines</description>
<filename>../../gst/law/.libs/libgstalaw.so</filename>
<basename>libgstalaw.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alpha.xml b/docs/plugins/inspect/plugin-alpha.xml
index 3baeb30..77bffef 100644
--- a/docs/plugins/inspect/plugin-alpha.xml
+++ b/docs/plugins/inspect/plugin-alpha.xml
@@ -3,7 +3,7 @@
<description>adds an alpha channel to video - constant or via chroma-keying</description>
<filename>../../gst/alpha/.libs/libgstalpha.so</filename>
<basename>libgstalpha.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alphacolor.xml b/docs/plugins/inspect/plugin-alphacolor.xml
index 5fba0df..920c157 100644
--- a/docs/plugins/inspect/plugin-alphacolor.xml
+++ b/docs/plugins/inspect/plugin-alphacolor.xml
@@ -3,7 +3,7 @@
<description>RGBA from/to AYUV colorspace conversion preserving the alpha channel</description>
<filename>../../gst/alpha/.libs/libgstalphacolor.so</filename>
<basename>libgstalphacolor.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-apetag.xml b/docs/plugins/inspect/plugin-apetag.xml
index 31cb466..fa5c60a 100644
--- a/docs/plugins/inspect/plugin-apetag.xml
+++ b/docs/plugins/inspect/plugin-apetag.xml
@@ -3,7 +3,7 @@
<description>APEv1/2 tag reader</description>
<filename>../../gst/apetag/.libs/libgstapetag.so</filename>
<basename>libgstapetag.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiofx.xml b/docs/plugins/inspect/plugin-audiofx.xml
index 4786033..655f527 100644
--- a/docs/plugins/inspect/plugin-audiofx.xml
+++ b/docs/plugins/inspect/plugin-audiofx.xml
@@ -3,7 +3,7 @@
<description>Audio effects plugin</description>
<filename>../../gst/audiofx/.libs/libgstaudiofx.so</filename>
<basename>libgstaudiofx.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audioparsers.xml b/docs/plugins/inspect/plugin-audioparsers.xml
index b9c5e0d..4d0599d 100644
--- a/docs/plugins/inspect/plugin-audioparsers.xml
+++ b/docs/plugins/inspect/plugin-audioparsers.xml
@@ -3,7 +3,7 @@
<description>Parsers for various audio formats</description>
<filename>../../gst/audioparsers/.libs/libgstaudioparsers.so</filename>
<basename>libgstaudioparsers.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-auparse.xml b/docs/plugins/inspect/plugin-auparse.xml
index 42b5111..1627164 100644
--- a/docs/plugins/inspect/plugin-auparse.xml
+++ b/docs/plugins/inspect/plugin-auparse.xml
@@ -3,7 +3,7 @@
<description>parses au streams</description>
<filename>../../gst/auparse/.libs/libgstauparse.so</filename>
<basename>libgstauparse.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-autodetect.xml b/docs/plugins/inspect/plugin-autodetect.xml
index b7bd994..142669d 100644
--- a/docs/plugins/inspect/plugin-autodetect.xml
+++ b/docs/plugins/inspect/plugin-autodetect.xml
@@ -3,7 +3,7 @@
<description>Plugin contains auto-detection plugins for video/audio in- and outputs</description>
<filename>../../gst/autodetect/.libs/libgstautodetect.so</filename>
<basename>libgstautodetect.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-avi.xml b/docs/plugins/inspect/plugin-avi.xml
index e2c02de..8943969 100644
--- a/docs/plugins/inspect/plugin-avi.xml
+++ b/docs/plugins/inspect/plugin-avi.xml
@@ -3,7 +3,7 @@
<description>AVI stream handling</description>
<filename>../../gst/avi/.libs/libgstavi.so</filename>
<basename>libgstavi.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cacasink.xml b/docs/plugins/inspect/plugin-cacasink.xml
index 3e4800b..c0c9a8f 100644
--- a/docs/plugins/inspect/plugin-cacasink.xml
+++ b/docs/plugins/inspect/plugin-cacasink.xml
@@ -3,7 +3,7 @@
<description>Colored ASCII Art video sink</description>
<filename>../../ext/libcaca/.libs/libgstcacasink.so</filename>
<basename>libgstcacasink.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cairo.xml b/docs/plugins/inspect/plugin-cairo.xml
index f1b7bf4..10b8015 100644
--- a/docs/plugins/inspect/plugin-cairo.xml
+++ b/docs/plugins/inspect/plugin-cairo.xml
@@ -3,7 +3,7 @@
<description>Cairo-based elements</description>
<filename>../../ext/cairo/.libs/libgstcairo.so</filename>
<basename>libgstcairo.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cutter.xml b/docs/plugins/inspect/plugin-cutter.xml
index 51e593c..eb80427 100644
--- a/docs/plugins/inspect/plugin-cutter.xml
+++ b/docs/plugins/inspect/plugin-cutter.xml
@@ -3,7 +3,7 @@
<description>Audio Cutter to split audio into non-silent bits</description>
<filename>../../gst/cutter/.libs/libgstcutter.so</filename>
<basename>libgstcutter.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-debug.xml b/docs/plugins/inspect/plugin-debug.xml
index adf19f0..5b3efd3 100644
--- a/docs/plugins/inspect/plugin-debug.xml
+++ b/docs/plugins/inspect/plugin-debug.xml
@@ -3,7 +3,7 @@
<description>elements for testing and debugging</description>
<filename>../../gst/debugutils/.libs/libgstdebug.so</filename>
<basename>libgstdebug.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-deinterlace.xml b/docs/plugins/inspect/plugin-deinterlace.xml
index 29e5f6a..7379736 100644
--- a/docs/plugins/inspect/plugin-deinterlace.xml
+++ b/docs/plugins/inspect/plugin-deinterlace.xml
@@ -3,7 +3,7 @@
<description>Deinterlacer</description>
<filename>../../gst/deinterlace/.libs/libgstdeinterlace.so</filename>
<basename>libgstdeinterlace.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtmf.xml b/docs/plugins/inspect/plugin-dtmf.xml
index b0e5efc..d7739d8 100644
--- a/docs/plugins/inspect/plugin-dtmf.xml
+++ b/docs/plugins/inspect/plugin-dtmf.xml
@@ -3,7 +3,7 @@
<description>DTMF plugins</description>
<filename>../../gst/dtmf/.libs/libgstdtmf.so</filename>
<basename>libgstdtmf.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dv.xml b/docs/plugins/inspect/plugin-dv.xml
index ab12e37..34d5422 100644
--- a/docs/plugins/inspect/plugin-dv.xml
+++ b/docs/plugins/inspect/plugin-dv.xml
@@ -3,7 +3,7 @@
<description>DV demuxer and decoder based on libdv (libdv.sf.net)</description>
<filename>../../ext/dv/.libs/libgstdv.so</filename>
<basename>libgstdv.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-effectv.xml b/docs/plugins/inspect/plugin-effectv.xml
index c8ec594..2874220 100644
--- a/docs/plugins/inspect/plugin-effectv.xml
+++ b/docs/plugins/inspect/plugin-effectv.xml
@@ -3,7 +3,7 @@
<description>effect plugins from the effectv project</description>
<filename>../../gst/effectv/.libs/libgsteffectv.so</filename>
<basename>libgsteffectv.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-equalizer.xml b/docs/plugins/inspect/plugin-equalizer.xml
index 54dee88..c092eed 100644
--- a/docs/plugins/inspect/plugin-equalizer.xml
+++ b/docs/plugins/inspect/plugin-equalizer.xml
@@ -3,7 +3,7 @@
<description>GStreamer audio equalizers</description>
<filename>../../gst/equalizer/.libs/libgstequalizer.so</filename>
<basename>libgstequalizer.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flac.xml b/docs/plugins/inspect/plugin-flac.xml
index 714a5bb..38903eb 100644
--- a/docs/plugins/inspect/plugin-flac.xml
+++ b/docs/plugins/inspect/plugin-flac.xml
@@ -3,7 +3,7 @@
<description>The FLAC Lossless compressor Codec</description>
<filename>../../ext/flac/.libs/libgstflac.so</filename>
<basename>libgstflac.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flv.xml b/docs/plugins/inspect/plugin-flv.xml
index bf38929..3bd64ee 100644
--- a/docs/plugins/inspect/plugin-flv.xml
+++ b/docs/plugins/inspect/plugin-flv.xml
@@ -3,7 +3,7 @@
<description>FLV muxing and demuxing plugin</description>
<filename>../../gst/flv/.libs/libgstflv.so</filename>
<basename>libgstflv.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flxdec.xml b/docs/plugins/inspect/plugin-flxdec.xml
index a16a5a0..bcb582a 100644
--- a/docs/plugins/inspect/plugin-flxdec.xml
+++ b/docs/plugins/inspect/plugin-flxdec.xml
@@ -3,7 +3,7 @@
<description>FLC/FLI/FLX video decoder</description>
<filename>../../gst/flx/.libs/libgstflxdec.so</filename>
<basename>libgstflxdec.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gdkpixbuf.xml b/docs/plugins/inspect/plugin-gdkpixbuf.xml
index 57d3496..24679da 100644
--- a/docs/plugins/inspect/plugin-gdkpixbuf.xml
+++ b/docs/plugins/inspect/plugin-gdkpixbuf.xml
@@ -3,7 +3,7 @@
<description>GdkPixbuf-based image decoder, overlay and sink</description>
<filename>../../ext/gdk_pixbuf/.libs/libgstgdkpixbuf.so</filename>
<basename>libgstgdkpixbuf.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-goom.xml b/docs/plugins/inspect/plugin-goom.xml
index debee17..e657f27 100644
--- a/docs/plugins/inspect/plugin-goom.xml
+++ b/docs/plugins/inspect/plugin-goom.xml
@@ -3,7 +3,7 @@
<description>GOOM visualization filter</description>
<filename>../../gst/goom/.libs/libgstgoom.so</filename>
<basename>libgstgoom.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-goom2k1.xml b/docs/plugins/inspect/plugin-goom2k1.xml
index f8d645f..c854ddf 100644
--- a/docs/plugins/inspect/plugin-goom2k1.xml
+++ b/docs/plugins/inspect/plugin-goom2k1.xml
@@ -3,7 +3,7 @@
<description>GOOM 2k1 visualization filter</description>
<filename>../../gst/goom2k1/.libs/libgstgoom2k1.so</filename>
<basename>libgstgoom2k1.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-icydemux.xml b/docs/plugins/inspect/plugin-icydemux.xml
index 56bd458..a20ffc2 100644
--- a/docs/plugins/inspect/plugin-icydemux.xml
+++ b/docs/plugins/inspect/plugin-icydemux.xml
@@ -3,7 +3,7 @@
<description>Demux ICY tags from a stream</description>
<filename>../../gst/icydemux/.libs/libgsticydemux.so</filename>
<basename>libgsticydemux.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-id3demux.xml b/docs/plugins/inspect/plugin-id3demux.xml
index ef3627a..61ef2c6 100644
--- a/docs/plugins/inspect/plugin-id3demux.xml
+++ b/docs/plugins/inspect/plugin-id3demux.xml
@@ -3,7 +3,7 @@
<description>Demux ID3v1 and ID3v2 tags from a file</description>
<filename>../../gst/id3demux/.libs/libgstid3demux.so</filename>
<basename>libgstid3demux.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-imagefreeze.xml b/docs/plugins/inspect/plugin-imagefreeze.xml
index dc2d9f0..7cc0db4 100644
--- a/docs/plugins/inspect/plugin-imagefreeze.xml
+++ b/docs/plugins/inspect/plugin-imagefreeze.xml
@@ -3,7 +3,7 @@
<description>Still frame stream generator</description>
<filename>../../gst/imagefreeze/.libs/libgstimagefreeze.so</filename>
<basename>libgstimagefreeze.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-interleave.xml b/docs/plugins/inspect/plugin-interleave.xml
index 6a511b4..3af5054 100644
--- a/docs/plugins/inspect/plugin-interleave.xml
+++ b/docs/plugins/inspect/plugin-interleave.xml
@@ -3,7 +3,7 @@
<description>Audio interleaver/deinterleaver</description>
<filename>../../gst/interleave/.libs/libgstinterleave.so</filename>
<basename>libgstinterleave.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-isomp4.xml b/docs/plugins/inspect/plugin-isomp4.xml
index 0f00123..9d43100 100644
--- a/docs/plugins/inspect/plugin-isomp4.xml
+++ b/docs/plugins/inspect/plugin-isomp4.xml
@@ -3,7 +3,7 @@
<description>ISO base media file format support (mp4, 3gpp, qt, mj2)</description>
<filename>../../gst/isomp4/.libs/libgstisomp4.so</filename>
<basename>libgstisomp4.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
@@ -107,7 +107,7 @@
<name>audio_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/x-opus, channel-mapping-family=(int)[ 0, 255 ], channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</details>
+ <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/x-opus, channel-mapping-family=(int)[ 0, 255 ], channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</details>
</caps>
<caps>
<name>subtitle_%u</name>
diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml
index 2bde220..3f7ba8f 100644
--- a/docs/plugins/inspect/plugin-jack.xml
+++ b/docs/plugins/inspect/plugin-jack.xml
@@ -3,7 +3,7 @@
<description>JACK audio elements</description>
<filename>../../ext/jack/.libs/libgstjack.so</filename>
<basename>libgstjack.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jpeg.xml b/docs/plugins/inspect/plugin-jpeg.xml
index 9b1b0ce..92c8c9c 100644
--- a/docs/plugins/inspect/plugin-jpeg.xml
+++ b/docs/plugins/inspect/plugin-jpeg.xml
@@ -3,7 +3,7 @@
<description>JPeg plugin library</description>
<filename>../../ext/jpeg/.libs/libgstjpeg.so</filename>
<basename>libgstjpeg.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-level.xml b/docs/plugins/inspect/plugin-level.xml
index 3178159..dac10e9 100644
--- a/docs/plugins/inspect/plugin-level.xml
+++ b/docs/plugins/inspect/plugin-level.xml
@@ -3,7 +3,7 @@
<description>Audio level plugin</description>
<filename>../../gst/level/.libs/libgstlevel.so</filename>
<basename>libgstlevel.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-matroska.xml b/docs/plugins/inspect/plugin-matroska.xml
index a05f15d..0590e49 100644
--- a/docs/plugins/inspect/plugin-matroska.xml
+++ b/docs/plugins/inspect/plugin-matroska.xml
@@ -3,7 +3,7 @@
<description>Matroska and WebM stream handling</description>
<filename>../../gst/matroska/.libs/libgstmatroska.so</filename>
<basename>libgstmatroska.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mulaw.xml b/docs/plugins/inspect/plugin-mulaw.xml
index b638c5b..aee1e88 100644
--- a/docs/plugins/inspect/plugin-mulaw.xml
+++ b/docs/plugins/inspect/plugin-mulaw.xml
@@ -3,7 +3,7 @@
<description>MuLaw audio conversion routines</description>
<filename>../../gst/law/.libs/libgstmulaw.so</filename>
<basename>libgstmulaw.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-multifile.xml b/docs/plugins/inspect/plugin-multifile.xml
index 2e1baa1..75115b2 100644
--- a/docs/plugins/inspect/plugin-multifile.xml
+++ b/docs/plugins/inspect/plugin-multifile.xml
@@ -3,7 +3,7 @@
<description>Reads/Writes buffers from/to sequentially named files</description>
<filename>../../gst/multifile/.libs/libgstmultifile.so</filename>
<basename>libgstmultifile.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-multipart.xml b/docs/plugins/inspect/plugin-multipart.xml
index 54867ab..d9c65c8 100644
--- a/docs/plugins/inspect/plugin-multipart.xml
+++ b/docs/plugins/inspect/plugin-multipart.xml
@@ -3,7 +3,7 @@
<description>multipart stream manipulation</description>
<filename>../../gst/multipart/.libs/libgstmultipart.so</filename>
<basename>libgstmultipart.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-navigationtest.xml b/docs/plugins/inspect/plugin-navigationtest.xml
index 191cc0f..6a86952 100644
--- a/docs/plugins/inspect/plugin-navigationtest.xml
+++ b/docs/plugins/inspect/plugin-navigationtest.xml
@@ -3,7 +3,7 @@
<description>Template for a video filter</description>
<filename>../../gst/debugutils/.libs/libgstnavigationtest.so</filename>
<basename>libgstnavigationtest.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-oss4.xml b/docs/plugins/inspect/plugin-oss4.xml
index 5015c84..1aefb44 100644
--- a/docs/plugins/inspect/plugin-oss4.xml
+++ b/docs/plugins/inspect/plugin-oss4.xml
@@ -3,7 +3,7 @@
<description>Open Sound System (OSS) version 4 support for GStreamer</description>
<filename>../../sys/oss4/.libs/libgstoss4audio.so</filename>
<basename>libgstoss4audio.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ossaudio.xml b/docs/plugins/inspect/plugin-ossaudio.xml
index 37285b3..7fe8fab 100644
--- a/docs/plugins/inspect/plugin-ossaudio.xml
+++ b/docs/plugins/inspect/plugin-ossaudio.xml
@@ -3,7 +3,7 @@
<description>OSS (Open Sound System) support for GStreamer</description>
<filename>../../sys/oss/.libs/libgstossaudio.so</filename>
<basename>libgstossaudio.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-png.xml b/docs/plugins/inspect/plugin-png.xml
index 5b2d1c7..e0c5024 100644
--- a/docs/plugins/inspect/plugin-png.xml
+++ b/docs/plugins/inspect/plugin-png.xml
@@ -3,7 +3,7 @@
<description>PNG plugin library</description>
<filename>../../ext/libpng/.libs/libgstpng.so</filename>
<basename>libgstpng.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pulseaudio.xml b/docs/plugins/inspect/plugin-pulseaudio.xml
index b94da2a..64e4b37 100644
--- a/docs/plugins/inspect/plugin-pulseaudio.xml
+++ b/docs/plugins/inspect/plugin-pulseaudio.xml
@@ -3,7 +3,7 @@
<description>PulseAudio plugin library</description>
<filename>../../ext/pulse/.libs/libgstpulse.so</filename>
<basename>libgstpulse.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-replaygain.xml b/docs/plugins/inspect/plugin-replaygain.xml
index a62ae07..2db78f1 100644
--- a/docs/plugins/inspect/plugin-replaygain.xml
+++ b/docs/plugins/inspect/plugin-replaygain.xml
@@ -3,7 +3,7 @@
<description>ReplayGain volume normalization</description>
<filename>../../gst/replaygain/.libs/libgstreplaygain.so</filename>
<basename>libgstreplaygain.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml
index 9575ddd..eead7ea 100644
--- a/docs/plugins/inspect/plugin-rtp.xml
+++ b/docs/plugins/inspect/plugin-rtp.xml
@@ -3,7 +3,7 @@
<description>Real-time protocol plugins</description>
<filename>../../gst/rtp/.libs/libgstrtp.so</filename>
<basename>libgstrtp.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtpmanager.xml b/docs/plugins/inspect/plugin-rtpmanager.xml
index e123298..d27c513 100644
--- a/docs/plugins/inspect/plugin-rtpmanager.xml
+++ b/docs/plugins/inspect/plugin-rtpmanager.xml
@@ -3,7 +3,7 @@
<description>RTP session management plugin library</description>
<filename>../../gst/rtpmanager/.libs/libgstrtpmanager.so</filename>
<basename>libgstrtpmanager.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtsp.xml b/docs/plugins/inspect/plugin-rtsp.xml
index 0487718..b80b128 100644
--- a/docs/plugins/inspect/plugin-rtsp.xml
+++ b/docs/plugins/inspect/plugin-rtsp.xml
@@ -3,7 +3,7 @@
<description>transfer data via RTSP</description>
<filename>../../gst/rtsp/.libs/libgstrtsp.so</filename>
<basename>libgstrtsp.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shapewipe.xml b/docs/plugins/inspect/plugin-shapewipe.xml
index 94bf3e2..83d644f 100644
--- a/docs/plugins/inspect/plugin-shapewipe.xml
+++ b/docs/plugins/inspect/plugin-shapewipe.xml
@@ -3,7 +3,7 @@
<description>Shape Wipe transition filter</description>
<filename>../../gst/shapewipe/.libs/libgstshapewipe.so</filename>
<basename>libgstshapewipe.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shout2send.xml b/docs/plugins/inspect/plugin-shout2send.xml
index 781e734..ed9db2a 100644
--- a/docs/plugins/inspect/plugin-shout2send.xml
+++ b/docs/plugins/inspect/plugin-shout2send.xml
@@ -3,7 +3,7 @@
<description>Sends data to an icecast server using libshout2</description>
<filename>../../ext/shout2/.libs/libgstshout2.so</filename>
<basename>libgstshout2.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>libshout2</package>
diff --git a/docs/plugins/inspect/plugin-smpte.xml b/docs/plugins/inspect/plugin-smpte.xml
index 50583e1..f598b81 100644
--- a/docs/plugins/inspect/plugin-smpte.xml
+++ b/docs/plugins/inspect/plugin-smpte.xml
@@ -3,7 +3,7 @@
<description>Apply the standard SMPTE transitions on video images</description>
<filename>../../gst/smpte/.libs/libgstsmpte.so</filename>
<basename>libgstsmpte.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-soup.xml b/docs/plugins/inspect/plugin-soup.xml
index 183d2b0..0effd0f 100644
--- a/docs/plugins/inspect/plugin-soup.xml
+++ b/docs/plugins/inspect/plugin-soup.xml
@@ -3,7 +3,7 @@
<description>libsoup HTTP client src/sink</description>
<filename>../../ext/soup/.libs/libgstsouphttpsrc.so</filename>
<basename>libgstsouphttpsrc.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-spectrum.xml b/docs/plugins/inspect/plugin-spectrum.xml
index 197a9bb..8c25678 100644
--- a/docs/plugins/inspect/plugin-spectrum.xml
+++ b/docs/plugins/inspect/plugin-spectrum.xml
@@ -3,7 +3,7 @@
<description>Run an FFT on the audio signal, output spectrum data</description>
<filename>../../gst/spectrum/.libs/libgstspectrum.so</filename>
<basename>libgstspectrum.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-speex.xml b/docs/plugins/inspect/plugin-speex.xml
index 18891cf..47efa8e 100644
--- a/docs/plugins/inspect/plugin-speex.xml
+++ b/docs/plugins/inspect/plugin-speex.xml
@@ -3,7 +3,7 @@
<description>Speex plugin library</description>
<filename>../../ext/speex/.libs/libgstspeex.so</filename>
<basename>libgstspeex.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-taglib.xml b/docs/plugins/inspect/plugin-taglib.xml
index 4f563c9..7dee83b 100644
--- a/docs/plugins/inspect/plugin-taglib.xml
+++ b/docs/plugins/inspect/plugin-taglib.xml
@@ -3,7 +3,7 @@
<description>Tag writing plug-in based on taglib</description>
<filename>../../ext/taglib/.libs/libgsttaglib.so</filename>
<basename>libgsttaglib.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-udp.xml b/docs/plugins/inspect/plugin-udp.xml
index a7e0e16..683806d 100644
--- a/docs/plugins/inspect/plugin-udp.xml
+++ b/docs/plugins/inspect/plugin-udp.xml
@@ -3,7 +3,7 @@
<description>transfer data via UDP</description>
<filename>../../gst/udp/.libs/libgstudp.so</filename>
<basename>libgstudp.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-video4linux2.xml b/docs/plugins/inspect/plugin-video4linux2.xml
index dab311d..cf12fa1 100644
--- a/docs/plugins/inspect/plugin-video4linux2.xml
+++ b/docs/plugins/inspect/plugin-video4linux2.xml
@@ -3,7 +3,7 @@
<description>elements for Video 4 Linux</description>
<filename>../../sys/v4l2/.libs/libgstvideo4linux2.so</filename>
<basename>libgstvideo4linux2.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videobox.xml b/docs/plugins/inspect/plugin-videobox.xml
index 8c331c0..fb0b472 100644
--- a/docs/plugins/inspect/plugin-videobox.xml
+++ b/docs/plugins/inspect/plugin-videobox.xml
@@ -3,7 +3,7 @@
<description>resizes a video by adding borders or cropping</description>
<filename>../../gst/videobox/.libs/libgstvideobox.so</filename>
<basename>libgstvideobox.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videocrop.xml b/docs/plugins/inspect/plugin-videocrop.xml
index c2cbcc3..8495a7b 100644
--- a/docs/plugins/inspect/plugin-videocrop.xml
+++ b/docs/plugins/inspect/plugin-videocrop.xml
@@ -3,7 +3,7 @@
<description>Crops video into a user-defined region</description>
<filename>../../gst/videocrop/.libs/libgstvideocrop.so</filename>
<basename>libgstvideocrop.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videofilter.xml b/docs/plugins/inspect/plugin-videofilter.xml
index f7ca363..7cb79c0 100644
--- a/docs/plugins/inspect/plugin-videofilter.xml
+++ b/docs/plugins/inspect/plugin-videofilter.xml
@@ -3,7 +3,7 @@
<description>Video filters plugin</description>
<filename>../../gst/videofilter/.libs/libgstvideofilter.so</filename>
<basename>libgstvideofilter.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videomixer.xml b/docs/plugins/inspect/plugin-videomixer.xml
index 1f119d5..a048fd6 100644
--- a/docs/plugins/inspect/plugin-videomixer.xml
+++ b/docs/plugins/inspect/plugin-videomixer.xml
@@ -3,7 +3,7 @@
<description>Video mixer</description>
<filename>../../gst/videomixer/.libs/libgstvideomixer.so</filename>
<basename>libgstvideomixer.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vpx.xml b/docs/plugins/inspect/plugin-vpx.xml
index 37b6669..2c489d8 100644
--- a/docs/plugins/inspect/plugin-vpx.xml
+++ b/docs/plugins/inspect/plugin-vpx.xml
@@ -3,7 +3,7 @@
<description>VP8 plugin</description>
<filename>../../ext/vpx/.libs/libgstvpx.so</filename>
<basename>libgstvpx.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavenc.xml b/docs/plugins/inspect/plugin-wavenc.xml
index b6d39b9..7e492b4 100644
--- a/docs/plugins/inspect/plugin-wavenc.xml
+++ b/docs/plugins/inspect/plugin-wavenc.xml
@@ -3,7 +3,7 @@
<description>Encode raw audio into WAV</description>
<filename>../../gst/wavenc/.libs/libgstwavenc.so</filename>
<basename>libgstwavenc.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavpack.xml b/docs/plugins/inspect/plugin-wavpack.xml
index 2c5f4da..c2cfd56 100644
--- a/docs/plugins/inspect/plugin-wavpack.xml
+++ b/docs/plugins/inspect/plugin-wavpack.xml
@@ -3,7 +3,7 @@
<description>Wavpack lossless/lossy audio format handling</description>
<filename>../../ext/wavpack/.libs/libgstwavpack.so</filename>
<basename>libgstwavpack.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavparse.xml b/docs/plugins/inspect/plugin-wavparse.xml
index 4c0c6a3..cd6158b 100644
--- a/docs/plugins/inspect/plugin-wavparse.xml
+++ b/docs/plugins/inspect/plugin-wavparse.xml
@@ -3,7 +3,7 @@
<description>Parse a .wav file into raw audio</description>
<filename>../../gst/wavparse/.libs/libgstwavparse.so</filename>
<basename>libgstwavparse.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ximagesrc.xml b/docs/plugins/inspect/plugin-ximagesrc.xml
index d8b9297..f215dcf 100644
--- a/docs/plugins/inspect/plugin-ximagesrc.xml
+++ b/docs/plugins/inspect/plugin-ximagesrc.xml
@@ -3,7 +3,7 @@
<description>X11 video input plugin using standard Xlib calls</description>
<filename>../../sys/ximage/.libs/libgstximagesrc.so</filename>
<basename>libgstximagesrc.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-y4menc.xml b/docs/plugins/inspect/plugin-y4menc.xml
index 34a2242..16c14f3 100644
--- a/docs/plugins/inspect/plugin-y4menc.xml
+++ b/docs/plugins/inspect/plugin-y4menc.xml
@@ -3,7 +3,7 @@
<description>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</description>
<filename>../../gst/y4m/.libs/libgsty4menc.so</filename>
<basename>libgsty4menc.so</basename>
- <version>1.8.1</version>
+ <version>1.8.2</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c
index 89911d7..e36b4d2 100644
--- a/ext/dv/gstdvdec.c
+++ b/ext/dv/gstdvdec.c
@@ -58,15 +58,15 @@
#define PAL_FRAMERATE_NUMERATOR 25
#define PAL_FRAMERATE_DENOMINATOR 1
-#define PAL_NORMAL_PAR_X 59
-#define PAL_NORMAL_PAR_Y 54
-#define PAL_WIDE_PAR_X 118
-#define PAL_WIDE_PAR_Y 81
+#define PAL_NORMAL_PAR_X 16
+#define PAL_NORMAL_PAR_Y 15
+#define PAL_WIDE_PAR_X 64
+#define PAL_WIDE_PAR_Y 45
-#define NTSC_NORMAL_PAR_X 10
-#define NTSC_NORMAL_PAR_Y 11
-#define NTSC_WIDE_PAR_X 40
-#define NTSC_WIDE_PAR_Y 33
+#define NTSC_NORMAL_PAR_X 8
+#define NTSC_NORMAL_PAR_Y 9
+#define NTSC_WIDE_PAR_X 32
+#define NTSC_WIDE_PAR_Y 27
#define DV_DEFAULT_QUALITY DV_QUALITY_BEST
#define DV_DEFAULT_DECODE_NTH 1
diff --git a/ext/dv/gstdvdemux.c b/ext/dv/gstdvdemux.c
index 51eaaaf..9479e9a 100644
--- a/ext/dv/gstdvdemux.c
+++ b/ext/dv/gstdvdemux.c
@@ -93,15 +93,15 @@
#define PAL_FRAMERATE_NUMERATOR 25
#define PAL_FRAMERATE_DENOMINATOR 1
-#define PAL_NORMAL_PAR_X 59
-#define PAL_NORMAL_PAR_Y 54
-#define PAL_WIDE_PAR_X 118
-#define PAL_WIDE_PAR_Y 81
+#define PAL_NORMAL_PAR_X 16
+#define PAL_NORMAL_PAR_Y 15
+#define PAL_WIDE_PAR_X 64
+#define PAL_WIDE_PAR_Y 45
-#define NTSC_NORMAL_PAR_X 10
-#define NTSC_NORMAL_PAR_Y 11
-#define NTSC_WIDE_PAR_X 40
-#define NTSC_WIDE_PAR_Y 33
+#define NTSC_NORMAL_PAR_X 8
+#define NTSC_NORMAL_PAR_Y 9
+#define NTSC_WIDE_PAR_X 32
+#define NTSC_WIDE_PAR_Y 27
GST_DEBUG_CATEGORY_STATIC (dvdemux_debug);
#define GST_CAT_DEFAULT dvdemux_debug
diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c
index 0ccfca9..b3fda92 100644
--- a/ext/jpeg/gstjpegdec.c
+++ b/ext/jpeg/gstjpegdec.c
@@ -104,6 +104,8 @@
GstVideoCodecFrame * frame);
static gboolean gst_jpeg_dec_decide_allocation (GstVideoDecoder * bdec,
GstQuery * query);
+static gboolean gst_jpeg_dec_sink_event (GstVideoDecoder * bdec,
+ GstEvent * event);
#define gst_jpeg_dec_parent_class parent_class
G_DEFINE_TYPE (GstJpegDec, gst_jpeg_dec, GST_TYPE_VIDEO_DECODER);
@@ -175,6 +177,7 @@
vdec_class->set_format = gst_jpeg_dec_set_format;
vdec_class->handle_frame = gst_jpeg_dec_handle_frame;
vdec_class->decide_allocation = gst_jpeg_dec_decide_allocation;
+ vdec_class->sink_event = gst_jpeg_dec_sink_event;
GST_DEBUG_CATEGORY_INIT (jpeg_dec_debug, "jpegdec", 0, "JPEG decoder");
GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE");
@@ -592,11 +595,6 @@
{
GstJpegDec *jpeg = GST_JPEG_DEC (dec);
- if (dec->input_segment.format == GST_FORMAT_TIME)
- gst_video_decoder_set_packetized (dec, TRUE);
- else
- gst_video_decoder_set_packetized (dec, FALSE);
-
if (jpeg->input_state)
gst_video_codec_state_unref (jpeg->input_state);
jpeg->input_state = gst_video_codec_state_ref (state);
@@ -1281,6 +1279,25 @@
}
static gboolean
+gst_jpeg_dec_sink_event (GstVideoDecoder * bdec, GstEvent * event)
+{
+ const GstSegment *segment;
+
+ if (GST_EVENT_TYPE (event) != GST_EVENT_SEGMENT)
+ goto done;
+
+ gst_event_parse_segment (event, &segment);
+
+ if (segment->format == GST_FORMAT_TIME)
+ gst_video_decoder_set_packetized (bdec, TRUE);
+ else
+ gst_video_decoder_set_packetized (bdec, FALSE);
+
+done:
+ return GST_VIDEO_DECODER_CLASS (parent_class)->sink_event (bdec, event);
+}
+
+static gboolean
gst_jpeg_dec_start (GstVideoDecoder * bdec)
{
GstJpegDec *dec = (GstJpegDec *) bdec;
diff --git a/ext/libpng/gstpngdec.c b/ext/libpng/gstpngdec.c
index 7c98181..e8200e2 100644
--- a/ext/libpng/gstpngdec.c
+++ b/ext/libpng/gstpngdec.c
@@ -56,6 +56,8 @@
GstVideoCodecFrame * frame);
static gboolean gst_pngdec_decide_allocation (GstVideoDecoder * decoder,
GstQuery * query);
+static gboolean gst_pngdec_sink_event (GstVideoDecoder * bdec,
+ GstEvent * event);
#define parent_class gst_pngdec_parent_class
G_DEFINE_TYPE (GstPngDec, gst_pngdec, GST_TYPE_VIDEO_DECODER);
@@ -97,6 +99,7 @@
vdec_class->parse = gst_pngdec_parse;
vdec_class->handle_frame = gst_pngdec_handle_frame;
vdec_class->decide_allocation = gst_pngdec_decide_allocation;
+ vdec_class->sink_event = gst_pngdec_sink_event;
GST_DEBUG_CATEGORY_INIT (pngdec_debug, "pngdec", 0, "PNG image decoder");
}
@@ -165,11 +168,6 @@
gst_video_codec_state_unref (pngdec->input_state);
pngdec->input_state = gst_video_codec_state_ref (state);
- if (decoder->input_segment.format == GST_FORMAT_TIME)
- gst_video_decoder_set_packetized (decoder, TRUE);
- else
- gst_video_decoder_set_packetized (decoder, FALSE);
-
/* We'll set format later on */
return TRUE;
@@ -531,6 +529,25 @@
}
static gboolean
+gst_pngdec_sink_event (GstVideoDecoder * bdec, GstEvent * event)
+{
+ const GstSegment *segment;
+
+ if (GST_EVENT_TYPE (event) != GST_EVENT_SEGMENT)
+ goto done;
+
+ gst_event_parse_segment (event, &segment);
+
+ if (segment->format == GST_FORMAT_TIME)
+ gst_video_decoder_set_packetized (bdec, TRUE);
+ else
+ gst_video_decoder_set_packetized (bdec, FALSE);
+
+done:
+ return GST_VIDEO_DECODER_CLASS (parent_class)->sink_event (bdec, event);
+}
+
+static gboolean
gst_pngdec_libpng_init (GstPngDec * pngdec)
{
g_return_val_if_fail (GST_IS_PNGDEC (pngdec), FALSE);
diff --git a/ext/soup/gstsouphttpclientsink.c b/ext/soup/gstsouphttpclientsink.c
index 108aabf..645c298 100644
--- a/ext/soup/gstsouphttpclientsink.c
+++ b/ext/soup/gstsouphttpclientsink.c
@@ -264,8 +264,10 @@
g_list_free_full (souphttpsink->streamheader_buffers,
(GDestroyNotify) gst_buffer_unref);
+ souphttpsink->streamheader_buffers = NULL;
g_list_free_full (souphttpsink->sent_buffers,
(GDestroyNotify) gst_buffer_unref);
+ souphttpsink->sent_buffers = NULL;
}
static gboolean
diff --git a/ext/vpx/gstvpxenc.c b/ext/vpx/gstvpxenc.c
index 11d4cc1..003d464 100644
--- a/ext/vpx/gstvpxenc.c
+++ b/ext/vpx/gstvpxenc.c
@@ -1888,7 +1888,17 @@
duration =
gst_util_uint64_scale (frame->duration, encoder->cfg.g_timebase.den,
encoder->cfg.g_timebase.num * (GstClockTime) GST_SECOND);
- encoder->last_pts += frame->duration;
+
+ if (duration > 0) {
+ encoder->last_pts += frame->duration;
+ } else {
+ /* We force the path ignoring the duration if we end up with a zero
+ * value for duration after scaling (e.g. duration value too small) */
+ GST_WARNING_OBJECT (encoder,
+ "Ignoring too small frame duration %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (frame->duration));
+ duration = 1;
+ }
} else {
duration = 1;
}
diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap
index 35288c2..ea48acb 100644
--- a/gst-plugins-good.doap
+++ b/gst-plugins-good.doap
@@ -34,6 +34,16 @@
<release>
<Version>
+ <revision>1.8.2</revision>
+ <branch>1.8</branch>
+ <name></name>
+ <created>2016-06-09</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.8.2.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.8.1</revision>
<branch>1.8</branch>
<name></name>
diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec
index 195cc27..c8f50cb 100644
--- a/gst-plugins-good.spec
+++ b/gst-plugins-good.spec
@@ -4,7 +4,7 @@
%define gst_minver 0.11.0
Name: %{gstreamer}-plugins-good
-Version: 1.8.1
+Version: 1.8.2
Release: 1.gst
Summary: GStreamer plug-ins with good code and licensing
diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c
index 6e6d929..10a2a05 100644
--- a/gst/auparse/gstauparse.c
+++ b/gst/auparse/gstauparse.c
@@ -421,7 +421,6 @@
gint64 timestamp;
gint64 duration;
gint64 offset;
- GstSegment segment;
auparse = GST_AU_PARSE (parent);
@@ -443,8 +442,11 @@
if (ret != GST_FLOW_OK)
goto out;
- gst_segment_init (&segment, GST_FORMAT_TIME);
- gst_pad_push_event (auparse->srcpad, gst_event_new_segment (&segment));
+ if (auparse->need_segment) {
+ gst_pad_push_event (auparse->srcpad,
+ gst_event_new_segment (&auparse->segment));
+ auparse->need_segment = FALSE;
+ }
}
avail = gst_adapter_available (auparse->adapter);
@@ -690,7 +692,6 @@
{
gint64 start, stop, offset = 0;
GstSegment segment;
- GstEvent *new_event = NULL;
/* some debug output */
gst_event_copy_segment (event, &segment);
@@ -722,9 +723,17 @@
gst_segment_init (&segment, GST_FORMAT_TIME);
segment.start = segment.time = start;
segment.stop = stop;
- new_event = gst_event_new_segment (&segment);
- ret = gst_pad_push_event (auparse->srcpad, new_event);
+ gst_segment_copy_into (&segment, &auparse->segment);
+
+ if (!gst_pad_has_current_caps (auparse->srcpad)) {
+ auparse->need_segment = TRUE;
+ ret = TRUE;
+ } else {
+ auparse->need_segment = FALSE;
+ ret = gst_pad_push_event (auparse->srcpad,
+ gst_event_new_segment (&segment));
+ }
auparse->buffer_offset = offset;
diff --git a/gst/auparse/gstauparse.h b/gst/auparse/gstauparse.h
index 6d8f35a..97a0995 100644
--- a/gst/auparse/gstauparse.h
+++ b/gst/auparse/gstauparse.h
@@ -53,7 +53,8 @@
GstAdapter *adapter;
- /* GstSegment segment; */
+ GstSegment segment;
+ gboolean need_segment;
gint64 offset; /* where sample data starts */
gint64 buffer_offset;
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index d07a307..93bdc9f 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -300,6 +300,7 @@
gst_adapter_clear (avi->adapter);
gst_segment_init (&avi->segment, GST_FORMAT_TIME);
+ avi->segment_seqnum = 0;
}
@@ -846,6 +847,7 @@
gst_segment_copy_into (&segment, &avi->segment);
GST_DEBUG_OBJECT (avi, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment);
+ avi->segment_seqnum = gst_event_get_seqnum (event);
segment_event = gst_event_new_segment (&segment);
gst_event_set_seqnum (segment_event, gst_event_get_seqnum (event));
gst_avi_demux_push_event (avi, segment_event);
@@ -1618,7 +1620,7 @@
* Create and push a flushing seek event upstream
*/
static gboolean
-perform_seek_to_offset (GstAviDemux * demux, guint64 offset)
+perform_seek_to_offset (GstAviDemux * demux, guint64 offset, guint32 seqnum)
{
GstEvent *event;
gboolean res = 0;
@@ -1629,7 +1631,7 @@
gst_event_new_seek (1.0, GST_FORMAT_BYTES,
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, offset,
GST_SEEK_TYPE_NONE, -1);
-
+ gst_event_set_seqnum (event, seqnum);
res = gst_pad_push_event (demux->sinkpad, event);
if (res)
@@ -1696,7 +1698,8 @@
}
/* seek to next index */
- return perform_seek_to_offset (avi, avi->odml_subidxs[avi->odml_subidx]);
+ return perform_seek_to_offset (avi, avi->odml_subidxs[avi->odml_subidx],
+ avi->segment_seqnum);
}
/*
@@ -2949,7 +2952,7 @@
(8 + GST_ROUND_UP_2 (size)));
avi->idx1_offset = offset + 8 + GST_ROUND_UP_2 (size);
/* issue seek to allow chain function to handle it and return! */
- perform_seek_to_offset (avi, avi->idx1_offset);
+ perform_seek_to_offset (avi, avi->idx1_offset, avi->segment_seqnum);
return;
}
@@ -3537,6 +3540,8 @@
if (avi->seg_event)
gst_event_unref (avi->seg_event);
avi->seg_event = gst_event_new_segment (&avi->segment);
+ if (avi->segment_seqnum)
+ gst_event_set_seqnum (avi->seg_event, avi->segment_seqnum);
gst_avi_demux_check_seekability (avi);
@@ -4307,6 +4312,8 @@
if (avi->seg_event)
gst_event_unref (avi->seg_event);
avi->seg_event = gst_event_new_segment (&avi->segment);
+ if (avi->segment_seqnum)
+ gst_event_set_seqnum (avi->seg_event, avi->segment_seqnum);
stamp = gst_util_get_timestamp () - stamp;
GST_DEBUG_OBJECT (avi, "pulling header took %" GST_TIME_FORMAT,
@@ -4638,6 +4645,7 @@
avi->seg_event = gst_event_new_segment (&avi->segment);
if (seqnum)
gst_event_set_seqnum (avi->seg_event, seqnum);
+ avi->segment_seqnum = seqnum;
if (!avi->streaming) {
gst_pad_start_task (avi->sinkpad, (GstTaskFunction) gst_avi_demux_loop,
@@ -4837,7 +4845,7 @@
GST_DEBUG_OBJECT (avi, "seeking to chunk at offset %" G_GUINT64_FORMAT,
min_offset);
- if (!perform_seek_to_offset (avi, min_offset)) {
+ if (!perform_seek_to_offset (avi, min_offset, gst_event_get_seqnum (event))) {
GST_DEBUG_OBJECT (avi, "seek event failed!");
return FALSE;
}
@@ -4887,7 +4895,7 @@
GST_INFO_OBJECT (avi,
"Seeking to legacy index/first subindex at %" G_GUINT64_FORMAT,
offset);
- return perform_seek_to_offset (avi, offset);
+ return perform_seek_to_offset (avi, offset, gst_event_get_seqnum (event));
}
/* FIXME: we have to always return true so that we don't block the seek
@@ -5667,18 +5675,25 @@
avi->segment.position = avi->segment.start;
if (avi->segment.flags & GST_SEEK_FLAG_SEGMENT) {
gint64 stop;
+ GstEvent *event;
+ GstMessage *msg;
if ((stop = avi->segment.stop) == -1)
stop = avi->segment.duration;
GST_INFO_OBJECT (avi, "sending segment_done");
- gst_element_post_message
- (GST_ELEMENT_CAST (avi),
+ msg =
gst_message_new_segment_done (GST_OBJECT_CAST (avi),
- GST_FORMAT_TIME, stop));
- gst_avi_demux_push_event (avi,
- gst_event_new_segment_done (GST_FORMAT_TIME, stop));
+ GST_FORMAT_TIME, stop);
+ if (avi->segment_seqnum)
+ gst_message_set_seqnum (msg, avi->segment_seqnum);
+ gst_element_post_message (GST_ELEMENT_CAST (avi), msg);
+
+ event = gst_event_new_segment_done (GST_FORMAT_TIME, stop);
+ if (avi->segment_seqnum)
+ gst_event_set_seqnum (event, avi->segment_seqnum);
+ gst_avi_demux_push_event (avi, event);
} else {
push_eos = TRUE;
}
@@ -5692,9 +5707,13 @@
push_eos = TRUE;
}
if (push_eos) {
+ GstEvent *event;
+
GST_INFO_OBJECT (avi, "sending eos");
- if (!gst_avi_demux_push_event (avi, gst_event_new_eos ()) &&
- (res == GST_FLOW_EOS)) {
+ event = gst_event_new_eos ();
+ if (avi->segment_seqnum)
+ gst_event_set_seqnum (event, avi->segment_seqnum);
+ if (!gst_avi_demux_push_event (avi, event) && (res == GST_FLOW_EOS)) {
GST_ELEMENT_ERROR (avi, STREAM, DEMUX,
(NULL), ("got eos but no streams (yet)"));
}
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index fd2af50..813ec60 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -182,6 +182,7 @@
/* segment in TIME */
GstSegment segment;
+ guint32 segment_seqnum;
/* pending tags/events */
GstEvent *seg_event;
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index ddfac13..818930f 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -644,6 +644,9 @@
}
}
+static void gst_avi_mux_audsink_set_fields (GstAviMux * avimux,
+ GstAviAudioPad * avipad);
+
static GstFlowReturn
gst_avi_mux_audsink_scan_mpeg_audio (GstAviMux * avimux, GstAviPad * avipad,
GstBuffer * buffer)
@@ -688,9 +691,10 @@
spf = 576;
}
- if (G_UNLIKELY (avipad->hdr.scale <= 1))
+ if (G_UNLIKELY (avipad->hdr.scale <= 1)) {
avipad->hdr.scale = spf;
- else if (G_UNLIKELY (avipad->hdr.scale != spf)) {
+ gst_avi_mux_audsink_set_fields (avimux, (GstAviAudioPad *) avipad);
+ } else if (G_UNLIKELY (avipad->hdr.scale != spf)) {
GST_WARNING_OBJECT (avimux, "input mpeg audio has varying frame size");
goto cbr_fallback;
}
@@ -709,6 +713,7 @@
{
GST_WARNING_OBJECT (avimux, "falling back to CBR muxing");
avipad->hdr.scale = 1;
+ gst_avi_mux_audsink_set_fields (avimux, (GstAviAudioPad *) avipad);
/* no need to check further */
avipad->hook = NULL;
goto done;
@@ -1780,6 +1785,10 @@
GSList *node;
GstSegment segment;
+ /* Do not write index and header, if the index has no data */
+ if (avimux->idx == NULL)
+ return GST_FLOW_OK;
+
/* if bigfile, rewrite header, else write indexes */
/* don't bail out at once if error, still try to re-write header */
if (avimux->video_pads > 0) {
@@ -1826,7 +1835,9 @@
audpad->auds.blockalign = audpad->max_audio_chunk;
if (audpad->auds.blockalign == 0)
audpad->auds.blockalign = 1;
- gst_avi_mux_audsink_set_fields (avimux, audpad);
+ /* note that hdr.rate is actually used by demux in cbr case */
+ if (avipad->hdr.scale <= 1)
+ avipad->hdr.rate = audpad->auds.av_bps / audpad->auds.blockalign;
avimux->avi_hdr.max_bps += audpad->auds.av_bps;
avipad->hdr.length = gst_util_uint64_scale (audpad->audio_time,
avipad->hdr.rate, avipad->hdr.scale * GST_SECOND);
diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c
index dcbd48b..6e05893 100644
--- a/gst/deinterlace/gstdeinterlace.c
+++ b/gst/deinterlace/gstdeinterlace.c
@@ -148,7 +148,7 @@
"greedyh"},
{GST_DEINTERLACE_GREEDY_L, "Motion Adaptive: Simple Detection", "greedyl"},
{GST_DEINTERLACE_VFIR, "Blur Vertical", "vfir"},
- {GST_DEINTERLACE_LINEAR, "Television: Full resolution", "linear"},
+ {GST_DEINTERLACE_LINEAR, "Linear", "linear"},
{GST_DEINTERLACE_LINEAR_BLEND, "Blur: Temporal (Do Not Use)",
"linearblend"},
{GST_DEINTERLACE_SCALER_BOB, "Double lines", "scalerbob"},
@@ -2519,6 +2519,7 @@
return TRUE;
}
gst_deinterlace_reset_history (self, FALSE);
+ gst_caps_unref (current_caps);
}
if (self->locking != GST_DEINTERLACE_LOCKING_NONE) {
diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c
index ee54b2a..7f0ed66 100644
--- a/gst/flv/gstflvdemux.c
+++ b/gst/flv/gstflvdemux.c
@@ -402,8 +402,8 @@
} else {
gst_tag_list_add (demux->taglist, GST_TAG_MERGE_REPLACE,
GST_TAG_DATE_TIME, dt, NULL);
+ gst_date_time_unref (dt);
}
- gst_date_time_unref (dt);
} else if (!strcmp (tag_name, "creator")) {
gst_tag_list_add (demux->taglist, GST_TAG_MERGE_REPLACE,
GST_TAG_ARTIST, s, NULL);
diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c
index 48f8b66..10db67f 100644
--- a/gst/flv/gstflvmux.c
+++ b/gst/flv/gstflvmux.c
@@ -1604,7 +1604,7 @@
}
mux->state = GST_FLV_MUX_STATE_DATA;
- if (GST_COLLECT_PADS_DTS_IS_VALID (cdata))
+ if (cdata && GST_COLLECT_PADS_DTS_IS_VALID (cdata))
mux->first_timestamp = GST_COLLECT_PADS_DTS (cdata);
else
mux->first_timestamp = 0;
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index 9ac7c77..5be830b 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -3461,30 +3461,38 @@
/* now map onto a fourcc, and some extra properties */
if (strcmp (mimetype, "audio/mpeg") == 0) {
- gint mpegversion = 0;
+ gint mpegversion = 0, mpegaudioversion = 0;
gint layer = -1;
gst_structure_get_int (structure, "mpegversion", &mpegversion);
switch (mpegversion) {
case 1:
gst_structure_get_int (structure, "layer", &layer);
- switch (layer) {
- case 3:
- /* mp3 */
- /* note: QuickTime player does not like mp3 either way in iso/mp4 */
- if (format == GST_QT_MUX_FORMAT_QT)
- entry.fourcc = FOURCC__mp3;
- else {
- entry.fourcc = FOURCC_mp4a;
- ext_atom =
- build_esds_extension (qtpad->trak, ESDS_OBJECT_TYPE_MPEG1_P3,
- ESDS_STREAM_TYPE_AUDIO, codec_data, qtpad->avg_bitrate,
- qtpad->max_bitrate);
- }
- entry.samples_per_packet = 1152;
- entry.bytes_per_sample = 2;
- break;
+ gst_structure_get_int (structure, "mpegaudioversion",
+ &mpegaudioversion);
+
+ /* mp1/2/3 */
+ /* note: QuickTime player does not like mp3 either way in iso/mp4 */
+ if (format == GST_QT_MUX_FORMAT_QT)
+ entry.fourcc = FOURCC__mp3;
+ else {
+ entry.fourcc = FOURCC_mp4a;
+ ext_atom =
+ build_esds_extension (qtpad->trak, ESDS_OBJECT_TYPE_MPEG1_P3,
+ ESDS_STREAM_TYPE_AUDIO, codec_data, qtpad->avg_bitrate,
+ qtpad->max_bitrate);
}
+ if (layer == 1) {
+ g_warn_if_fail (format == GST_QT_MUX_FORMAT_MP4);
+ entry.samples_per_packet = 384;
+ } else if (layer == 2) {
+ g_warn_if_fail (format == GST_QT_MUX_FORMAT_MP4);
+ entry.samples_per_packet = 1152;
+ } else {
+ g_warn_if_fail (layer == 3);
+ entry.samples_per_packet = (mpegaudioversion <= 1) ? 1152 : 576;
+ }
+ entry.bytes_per_sample = 2;
break;
case 4:
diff --git a/gst/isomp4/gstqtmuxmap.c b/gst/isomp4/gstqtmuxmap.c
index 61b11a4..5fabc92 100644
--- a/gst/isomp4/gstqtmuxmap.c
+++ b/gst/isomp4/gstqtmuxmap.c
@@ -104,6 +104,12 @@
"layer = (int) 3, " \
COMMON_AUDIO_CAPS (2, MAX)
+#define MP123_CAPS \
+ "audio/mpeg, " \
+ "mpegversion = (int) 1, " \
+ "layer = (int) [1, 3], " \
+ COMMON_AUDIO_CAPS (2, MAX)
+
#define AAC_CAPS \
"audio/mpeg, " \
"mpegversion = (int) 4, " \
@@ -190,7 +196,7 @@
GST_STATIC_CAPS ("video/quicktime, variant = (string) iso"),
GST_STATIC_CAPS (MPEG4V_CAPS "; " H264_CAPS ";"
"video/x-mp4-part," COMMON_VIDEO_CAPS),
- GST_STATIC_CAPS (MP3_CAPS "; "
+ GST_STATIC_CAPS (MP123_CAPS "; "
AAC_CAPS " ; " AC3_CAPS " ; " ALAC_CAPS " ; " OPUS_CAPS),
GST_STATIC_CAPS (TEXT_UTF8)}
,
diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index d21da31..db2d361 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -314,7 +314,6 @@
/* the Gst segment we are processing out, used for clipping */
GstSegment segment;
- guint32 segment_seqnum; /* segment event seqnum obtained from seek */
/* quicktime segments */
guint32 n_segments;
@@ -526,6 +525,11 @@
static GstFlowReturn qtdemux_prepare_streams (GstQTDemux * qtdemux);
static void qtdemux_do_allocation (GstQTDemux * qtdemux,
QtDemuxStream * stream);
+static gboolean gst_qtdemux_activate_segment (GstQTDemux * qtdemux,
+ QtDemuxStream * stream, guint32 seg_idx, GstClockTime offset);
+static gboolean gst_qtdemux_stream_update_segment (GstQTDemux * qtdemux,
+ QtDemuxStream * stream, gint seg_idx, GstClockTime offset,
+ GstClockTime * _start, GstClockTime * _stop);
static gboolean qtdemux_pull_mfro_mfra (GstQTDemux * qtdemux);
static void check_update_duration (GstQTDemux * qtdemux, GstClockTime duration);
@@ -586,7 +590,6 @@
qtdemux->state = QTDEMUX_STATE_INITIAL;
qtdemux->pullbased = FALSE;
qtdemux->posted_redirect = FALSE;
- qtdemux->pending_configure = FALSE;
qtdemux->neededbytes = 16;
qtdemux->todrop = 0;
qtdemux->adapter = gst_adapter_new ();
@@ -1489,6 +1492,7 @@
/* and set all streams to the final position */
gst_flow_combiner_reset (qtdemux->flowcombiner);
+ qtdemux->segment_seqnum = seqnum;
for (n = 0; n < qtdemux->n_streams; n++) {
QtDemuxStream *stream = qtdemux->streams[n];
@@ -1498,7 +1502,6 @@
stream->offset_in_sample = 0;
stream->segment_index = -1;
stream->sent_eos = FALSE;
- stream->segment_seqnum = seqnum;
if (segment->flags & GST_SEEK_FLAG_FLUSH)
gst_segment_init (&stream->segment, GST_FORMAT_TIME);
@@ -1965,10 +1968,6 @@
qtdemux->have_group_id = FALSE;
qtdemux->group_id = G_MAXUINT;
- if (qtdemux->protection_system_ids) {
- g_ptr_array_free (qtdemux->protection_system_ids, TRUE);
- qtdemux->protection_system_ids = NULL;
- }
g_queue_foreach (&qtdemux->protection_event_queue, (GFunc) gst_event_unref,
NULL);
g_queue_clear (&qtdemux->protection_event_queue);
@@ -1976,6 +1975,7 @@
qtdemux->offset = 0;
gst_adapter_clear (qtdemux->adapter);
gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME);
+ qtdemux->segment_seqnum = 0;
if (hard) {
for (n = 0; n < qtdemux->n_streams; n++) {
@@ -1992,7 +1992,10 @@
gst_caps_replace (&qtdemux->media_caps, NULL);
qtdemux->timescale = 0;
qtdemux->got_moov = FALSE;
- qtdemux->pending_configure = FALSE;
+ if (qtdemux->protection_system_ids) {
+ g_ptr_array_free (qtdemux->protection_system_ids, TRUE);
+ qtdemux->protection_system_ids = NULL;
+ }
} else if (qtdemux->mss_mode) {
gst_flow_combiner_reset (qtdemux->flowcombiner);
for (n = 0; n < qtdemux->n_streams; n++)
@@ -2001,12 +2004,14 @@
gst_flow_combiner_reset (qtdemux->flowcombiner);
for (n = 0; n < qtdemux->n_streams; n++) {
qtdemux->streams[n]->sent_eos = FALSE;
- qtdemux->streams[n]->segment_seqnum = 0;
qtdemux->streams[n]->time_position = 0;
qtdemux->streams[n]->accumulated_base = 0;
}
if (!qtdemux->pending_newsegment) {
qtdemux->pending_newsegment = gst_event_new_segment (&qtdemux->segment);
+ if (qtdemux->segment_seqnum)
+ gst_event_set_seqnum (qtdemux->pending_newsegment,
+ qtdemux->segment_seqnum);
}
}
}
@@ -2034,6 +2039,9 @@
GST_DEBUG_OBJECT (demux, "received newsegment %" GST_SEGMENT_FORMAT,
&segment);
+ /* erase any previously set segment */
+ gst_event_replace (&demux->pending_newsegment, NULL);
+
if (segment.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (demux, "new pending_newsegment");
gst_event_replace (&demux->pending_newsegment, event);
@@ -2106,11 +2114,12 @@
gst_segment_copy_into (&segment, &demux->segment);
GST_DEBUG_OBJECT (demux, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment);
- segment_event = gst_event_new_segment (&segment);
- gst_event_set_seqnum (segment_event, gst_event_get_seqnum (event));
- /* erase any previously set segment */
- gst_event_replace (&demux->pending_newsegment, NULL);
- gst_qtdemux_push_event (demux, segment_event);
+ if (demux->n_streams) {
+ gst_event_replace (&demux->pending_newsegment, NULL);
+ segment_event = gst_event_new_segment (&segment);
+ gst_event_set_seqnum (segment_event, gst_event_get_seqnum (event));
+ gst_qtdemux_push_event (demux, segment_event);
+ }
/* clear leftover in current segment, if any */
gst_adapter_clear (demux->adapter);
@@ -2693,6 +2702,20 @@
stream->segments[0].stop_time = duration;
stream->segments[0].duration = duration;
stream->segments[0].media_stop = duration;
+
+ /* let downstream know we possibly have a new stop time */
+ if (stream->segment_index != -1) {
+ GstClockTime pos;
+
+ if (qtdemux->segment.rate >= 0) {
+ pos = stream->segment.start;
+ } else {
+ pos = stream->segment.stop;
+ }
+
+ gst_qtdemux_stream_update_segment (qtdemux, stream,
+ stream->segment_index, pos, NULL, NULL);
+ }
}
}
}
@@ -4174,48 +4197,20 @@
return GST_FLOW_EOS;
}
-/* activate the given segment number @seg_idx of @stream at time @offset.
- * @offset is an absolute global position over all the segments.
- *
- * This will push out a NEWSEGMENT event with the right values and
- * position the stream index to the first decodable sample before
- * @offset.
+/*
+ * Gets the current qt segment start, stop and position for the
+ * given time offset. This is used in update_segment()
*/
-static gboolean
-gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream,
- guint32 seg_idx, GstClockTime offset)
+static void
+gst_qtdemux_stream_segment_get_boundaries (GstQTDemux * qtdemux,
+ QtDemuxStream * stream, GstClockTime offset,
+ GstClockTime * _start, GstClockTime * _stop, GstClockTime * _time)
{
- GstEvent *event;
- QtDemuxSegment *segment;
- guint32 index, kf_index;
GstClockTime seg_time;
GstClockTime start, stop, time;
- gdouble rate;
+ QtDemuxSegment *segment;
- GST_LOG_OBJECT (stream->pad, "activate segment %d, offset %" GST_TIME_FORMAT,
- seg_idx, GST_TIME_ARGS (offset));
-
- /* update the current segment */
- stream->segment_index = seg_idx;
-
- /* get the segment */
- segment = &stream->segments[seg_idx];
-
- if (G_UNLIKELY (offset < segment->time)) {
- GST_WARNING_OBJECT (stream->pad, "offset < segment->time %" GST_TIME_FORMAT,
- GST_TIME_ARGS (segment->time));
- return FALSE;
- }
-
- /* segment lies beyond total indicated duration */
- if (G_UNLIKELY (qtdemux->segment.duration != GST_CLOCK_TIME_NONE &&
- segment->time > qtdemux->segment.duration)) {
- GST_WARNING_OBJECT (stream->pad, "file duration %" GST_TIME_FORMAT
- " < segment->time %" GST_TIME_FORMAT,
- GST_TIME_ARGS (qtdemux->segment.duration),
- GST_TIME_ARGS (segment->time));
- return FALSE;
- }
+ segment = &stream->segments[stream->segment_index];
/* get time in this segment */
seg_time = offset - segment->time;
@@ -4234,7 +4229,9 @@
* segment->media_stop is in track-time-realm.
*
* In order to compare the two, we need to bring segment.stop
- * into the track-time-realm */
+ * into the track-time-realm
+ *
+ * FIXME - does this comment still hold? Don't see any conversion here */
stop = qtdemux->segment.stop;
if (stop == GST_CLOCK_TIME_NONE)
@@ -4263,6 +4260,50 @@
stop = MIN (segment->media_start + seg_time, stop);
}
+ *_start = start;
+ *_stop = stop;
+ *_time = time;
+}
+
+/*
+ * Updates the qt segment used for the stream and pushes a new segment event
+ * downstream on this stream's pad.
+ */
+static gboolean
+gst_qtdemux_stream_update_segment (GstQTDemux * qtdemux, QtDemuxStream * stream,
+ gint seg_idx, GstClockTime offset, GstClockTime * _start,
+ GstClockTime * _stop)
+{
+ QtDemuxSegment *segment;
+ GstClockTime start = 0, stop = GST_CLOCK_TIME_NONE, time = 0;
+ gdouble rate;
+ GstEvent *event;
+
+ /* update the current segment */
+ stream->segment_index = seg_idx;
+
+ /* get the segment */
+ segment = &stream->segments[seg_idx];
+
+ if (G_UNLIKELY (offset < segment->time)) {
+ GST_WARNING_OBJECT (stream->pad, "offset < segment->time %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (segment->time));
+ return FALSE;
+ }
+
+ /* segment lies beyond total indicated duration */
+ if (G_UNLIKELY (qtdemux->segment.duration != GST_CLOCK_TIME_NONE &&
+ segment->time > qtdemux->segment.duration)) {
+ GST_WARNING_OBJECT (stream->pad, "file duration %" GST_TIME_FORMAT
+ " < segment->time %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (qtdemux->segment.duration),
+ GST_TIME_ARGS (segment->time));
+ return FALSE;
+ }
+
+ gst_qtdemux_stream_segment_get_boundaries (qtdemux, stream, offset,
+ &start, &stop, &time);
+
GST_DEBUG_OBJECT (stream->pad, "new segment %d from %" GST_TIME_FORMAT
" to %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT, seg_idx,
GST_TIME_ARGS (start), GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
@@ -4291,8 +4332,8 @@
/* now prepare and send the segment */
if (stream->pad) {
event = gst_event_new_segment (&stream->segment);
- if (stream->segment_seqnum) {
- gst_event_set_seqnum (event, stream->segment_seqnum);
+ if (qtdemux->segment_seqnum) {
+ gst_event_set_seqnum (event, qtdemux->segment_seqnum);
}
gst_pad_push_event (stream->pad, event);
/* assume we can send more data now */
@@ -4301,6 +4342,38 @@
gst_qtdemux_push_tags (qtdemux, stream);
}
+ if (_start)
+ *_start = start;
+ if (_stop)
+ *_stop = stop;
+
+ return TRUE;
+}
+
+/* activate the given segment number @seg_idx of @stream at time @offset.
+ * @offset is an absolute global position over all the segments.
+ *
+ * This will push out a NEWSEGMENT event with the right values and
+ * position the stream index to the first decodable sample before
+ * @offset.
+ */
+static gboolean
+gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream,
+ guint32 seg_idx, GstClockTime offset)
+{
+ QtDemuxSegment *segment;
+ guint32 index, kf_index;
+ GstClockTime start = 0, stop = GST_CLOCK_TIME_NONE;
+
+ GST_LOG_OBJECT (stream->pad, "activate segment %d, offset %" GST_TIME_FORMAT,
+ seg_idx, GST_TIME_ARGS (offset));
+
+ if (!gst_qtdemux_stream_update_segment (qtdemux, stream, seg_idx, offset,
+ &start, &stop))
+ return FALSE;
+
+ segment = &stream->segments[stream->segment_index];
+
/* in the fragmented case, we pick a fragment that starts before our
* desired position and rely on downstream to wait for a keyframe
* (FIXME: doesn't seem to work so well with ismv and wmv, as no parser; the
@@ -4618,10 +4691,15 @@
GST_TIME_ARGS (demux->segment.position), GST_TIME_ARGS (end_time));
if (GST_CLOCK_TIME_IS_VALID (end_time)
&& (end_time + 2 * GST_SECOND < demux->segment.position)) {
+ GstEvent *event;
+
GST_DEBUG_OBJECT (demux, "sending EOS for stream %s",
GST_PAD_NAME (stream->pad));
stream->sent_eos = TRUE;
- gst_pad_push_event (stream->pad, gst_event_new_eos ());
+ event = gst_event_new_eos ();
+ if (demux->segment_seqnum)
+ gst_event_set_seqnum (event, demux->segment_seqnum);
+ gst_pad_push_event (stream->pad, event);
}
}
}
@@ -5398,25 +5476,44 @@
stop = qtdemux->segment.duration;
if (qtdemux->segment.rate >= 0) {
+ GstMessage *message;
+ GstEvent *event;
+
GST_LOG_OBJECT (qtdemux, "Sending segment done, at end of segment");
- gst_element_post_message (GST_ELEMENT_CAST (qtdemux),
- gst_message_new_segment_done (GST_OBJECT_CAST (qtdemux),
- GST_FORMAT_TIME, stop));
- gst_qtdemux_push_event (qtdemux,
- gst_event_new_segment_done (GST_FORMAT_TIME, stop));
+ message = gst_message_new_segment_done (GST_OBJECT_CAST (qtdemux),
+ GST_FORMAT_TIME, stop);
+ event = gst_event_new_segment_done (GST_FORMAT_TIME, stop);
+ if (qtdemux->segment_seqnum) {
+ gst_message_set_seqnum (message, qtdemux->segment_seqnum);
+ gst_event_set_seqnum (event, qtdemux->segment_seqnum);
+ }
+ gst_element_post_message (GST_ELEMENT_CAST (qtdemux), message);
+ gst_qtdemux_push_event (qtdemux, event);
} else {
+ GstMessage *message;
+ GstEvent *event;
+
/* For Reverse Playback */
GST_LOG_OBJECT (qtdemux, "Sending segment done, at start of segment");
- gst_element_post_message (GST_ELEMENT_CAST (qtdemux),
- gst_message_new_segment_done (GST_OBJECT_CAST (qtdemux),
- GST_FORMAT_TIME, qtdemux->segment.start));
- gst_qtdemux_push_event (qtdemux,
- gst_event_new_segment_done (GST_FORMAT_TIME,
- qtdemux->segment.start));
+ message = gst_message_new_segment_done (GST_OBJECT_CAST (qtdemux),
+ GST_FORMAT_TIME, qtdemux->segment.start);
+ event = gst_event_new_segment_done (GST_FORMAT_TIME,
+ qtdemux->segment.start);
+ if (qtdemux->segment_seqnum) {
+ gst_message_set_seqnum (message, qtdemux->segment_seqnum);
+ gst_event_set_seqnum (event, qtdemux->segment_seqnum);
+ }
+ gst_element_post_message (GST_ELEMENT_CAST (qtdemux), message);
+ gst_qtdemux_push_event (qtdemux, event);
}
} else {
+ GstEvent *event;
+
GST_LOG_OBJECT (qtdemux, "Sending EOS at end of segment");
- gst_qtdemux_push_event (qtdemux, gst_event_new_eos ());
+ event = gst_event_new_eos ();
+ if (qtdemux->segment_seqnum)
+ gst_event_set_seqnum (event, qtdemux->segment_seqnum);
+ gst_qtdemux_push_event (qtdemux, event);
}
} else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
GST_ELEMENT_ERROR (qtdemux, STREAM, FAILED,
@@ -5841,7 +5938,6 @@
&fourcc);
if (fourcc == FOURCC_moov) {
gint n;
- gboolean got_samples = FALSE;
/* in usual fragmented setup we could try to scan for more
* and end up at the the moov (after mdat) again */
@@ -5862,9 +5958,13 @@
demux->moov_node_compressed = NULL;
} else {
/* prepare newsegment to send when streaming actually starts */
- if (!demux->pending_newsegment)
+ if (!demux->pending_newsegment) {
demux->pending_newsegment =
gst_event_new_segment (&demux->segment);
+ if (demux->segment_seqnum)
+ gst_event_set_seqnum (demux->pending_newsegment,
+ demux->segment_seqnum);
+ }
}
demux->last_moov_offset = demux->offset;
@@ -5873,27 +5973,19 @@
qtdemux_node_dump (demux, demux->moov_node);
qtdemux_parse_tree (demux);
qtdemux_prepare_streams (demux);
+ if (!demux->got_moov)
+ qtdemux_expose_streams (demux);
+ else {
- for (n = 0; n < demux->n_streams; n++) {
- QtDemuxStream *stream = demux->streams[n];
- got_samples |= stream->stbl_index >= 0;
- }
- if (!demux->fragmented || got_samples) {
- if (!demux->got_moov) {
- qtdemux_expose_streams (demux);
- } else {
- for (n = 0; n < demux->n_streams; n++) {
- QtDemuxStream *stream = demux->streams[n];
- gst_qtdemux_configure_stream (demux, stream);
- }
+ for (n = 0; n < demux->n_streams; n++) {
+ QtDemuxStream *stream = demux->streams[n];
+
+ gst_qtdemux_configure_stream (demux, stream);
}
- gst_qtdemux_check_send_pending_segment (demux);
- demux->pending_configure = FALSE;
- } else {
- demux->pending_configure = TRUE;
}
demux->got_moov = TRUE;
+ gst_qtdemux_check_send_pending_segment (demux);
/* fragmented streams headers shouldn't contain edts atoms */
if (!demux->fragmented) {
@@ -5912,7 +6004,6 @@
guint64 dist = 0;
GstClockTime prev_pts;
guint64 prev_offset;
- gint n;
GST_DEBUG_OBJECT (demux, "Parsing [moof]");
@@ -5946,25 +6037,17 @@
ret = GST_FLOW_ERROR;
goto done;
}
- /* in MSS we need to expose the pads after the first moof as we won't get a moov
- * Also, fragmented format need to be exposed if a moov have no valid sample data */
- if (demux->mss_mode || demux->pending_configure) {
- if (!demux->exposed) {
- if (!demux->pending_newsegment) {
- GstSegment segment;
- gst_segment_init (&segment, GST_FORMAT_TIME);
- GST_DEBUG_OBJECT (demux, "new pending_newsegment");
- demux->pending_newsegment = gst_event_new_segment (&segment);
- }
- qtdemux_expose_streams (demux);
- } else {
- for (n = 0; n < demux->n_streams; n++) {
- QtDemuxStream *stream = demux->streams[n];
- gst_qtdemux_configure_stream (demux, stream);
- }
+ /* in MSS we need to expose the pads after the first moof as we won't get a moov */
+ if (demux->mss_mode && !demux->exposed) {
+ if (!demux->pending_newsegment) {
+ GST_DEBUG_OBJECT (demux, "new pending_newsegment");
+ demux->pending_newsegment =
+ gst_event_new_segment (&demux->segment);
+ if (demux->segment_seqnum)
+ gst_event_set_seqnum (demux->pending_newsegment,
+ demux->segment_seqnum);
}
- gst_qtdemux_check_send_pending_segment (demux);
- demux->pending_configure = FALSE;
+ qtdemux_expose_streams (demux);
}
} else {
GST_DEBUG_OBJECT (demux, "Discarding [moof]");
@@ -6994,6 +7077,8 @@
if (stream->subtype == FOURCC_vide) {
/* fps is calculated base on the duration of the average framerate since
* qt does not have a fixed framerate. */
+ gboolean fps_available = TRUE;
+
if ((stream->n_samples == 1) && (stream->first_duration == 0)) {
/* still frame */
stream->fps_n = 0;
@@ -7002,6 +7087,7 @@
if (stream->duration == 0 || stream->n_samples < 2) {
stream->fps_n = stream->timescale;
stream->fps_d = 1;
+ fps_available = FALSE;
} else {
GstClockTime avg_duration;
guint64 duration;
@@ -7034,10 +7120,11 @@
gst_video_guess_framerate (avg_duration, &stream->fps_n,
&stream->fps_d);
+
+ GST_DEBUG_OBJECT (qtdemux,
+ "Calculating framerate, timescale %u gave fps_n %d fps_d %d",
+ stream->timescale, stream->fps_n, stream->fps_d);
}
- GST_DEBUG_OBJECT (qtdemux,
- "Calculating framerate, timescale %u gave fps_n %d fps_d %d",
- stream->timescale, stream->fps_n, stream->fps_d);
}
if (stream->caps) {
@@ -7045,8 +7132,13 @@
gst_caps_set_simple (stream->caps,
"width", G_TYPE_INT, stream->width,
- "height", G_TYPE_INT, stream->height,
- "framerate", GST_TYPE_FRACTION, stream->fps_n, stream->fps_d, NULL);
+ "height", G_TYPE_INT, stream->height, NULL);
+
+ /* set framerate if calculated framerate is reliable */
+ if (fps_available) {
+ gst_caps_set_simple (stream->caps,
+ "framerate", GST_TYPE_FRACTION, stream->fps_n, stream->fps_d, NULL);
+ }
/* calculate pixel-aspect-ratio using display width and height */
GST_DEBUG_OBJECT (qtdemux,
@@ -8094,10 +8186,11 @@
if ((edts = qtdemux_tree_get_child_by_type (trak, FOURCC_edts))) {
GNode *elst;
gint n_segments;
- gint i, count;
+ gint i, count, entry_size;
guint64 time;
GstClockTime stime;
guint8 *buffer;
+ guint8 version;
GST_DEBUG_OBJECT (qtdemux, "looking for edit list");
if (!(elst = qtdemux_tree_get_child_by_type (edts, FOURCC_elst)))
@@ -8105,6 +8198,9 @@
buffer = elst->data;
+ version = QT_UINT8 (buffer + 8);
+ entry_size = (version == 1) ? 20 : 12;
+
n_segments = QT_UINT32 (buffer + 12);
/* we might allocate a bit too much, at least allocate 1 segment */
@@ -8117,14 +8213,24 @@
for (i = 0; i < n_segments; i++) {
guint64 duration;
guint64 media_time;
+ gboolean time_valid = TRUE;
QtDemuxSegment *segment;
guint32 rate_int;
GstClockTime media_start = GST_CLOCK_TIME_NONE;
- media_time = QT_UINT32 (buffer + 20 + i * 12);
- duration = QT_UINT32 (buffer + 16 + i * 12);
+ if (version == 1) {
+ media_time = QT_UINT64 (buffer + 24 + i * entry_size);
+ duration = QT_UINT64 (buffer + 16 + i * entry_size);
+ if (media_time == G_MAXUINT64)
+ time_valid = FALSE;
+ } else {
+ media_time = QT_UINT32 (buffer + 20 + i * entry_size);
+ duration = QT_UINT32 (buffer + 16 + i * entry_size);
+ if (media_time == G_MAXUINT32)
+ time_valid = FALSE;
+ }
- if (media_time != G_MAXUINT32)
+ if (time_valid)
media_start = QTSTREAMTIME_TO_GSTTIME (stream, media_time);
segment = &stream->segments[count++];
@@ -8140,7 +8246,7 @@
/* zero duration does not imply media_start == media_stop
* but, only specify media_start.*/
stime = QTTIME_TO_GSTTIME (qtdemux, qtdemux->duration);
- if (GST_CLOCK_TIME_IS_VALID (stime) && media_time != G_MAXUINT32
+ if (GST_CLOCK_TIME_IS_VALID (stime) && time_valid
&& stime >= media_start) {
segment->duration = stime - media_start;
} else {
@@ -8151,7 +8257,7 @@
segment->trak_media_start = media_time;
/* media_time expressed in stream timescale */
- if (media_time != G_MAXUINT32) {
+ if (time_valid) {
segment->media_start = media_start;
segment->media_stop = segment->media_start + segment->duration;
media_segments_count++;
@@ -8159,7 +8265,8 @@
segment->media_start = GST_CLOCK_TIME_NONE;
segment->media_stop = GST_CLOCK_TIME_NONE;
}
- rate_int = GST_READ_UINT32_BE (buffer + 24 + i * 12);
+ rate_int =
+ QT_UINT32 (buffer + ((version == 1) ? 32 : 24) + i * entry_size);
if (rate_int <= 1) {
/* 0 is not allowed, some programs write 1 instead of the floating point
@@ -10669,8 +10776,13 @@
for (iter = oldpads; iter; iter = g_slist_next (iter)) {
GstPad *oldpad = iter->data;
+ GstEvent *event;
- gst_pad_push_event (oldpad, gst_event_new_eos ());
+ event = gst_event_new_eos ();
+ if (qtdemux->segment_seqnum)
+ gst_event_set_seqnum (event, qtdemux->segment_seqnum);
+
+ gst_pad_push_event (oldpad, event);
gst_pad_set_active (oldpad, FALSE);
gst_element_remove_pad (GST_ELEMENT (qtdemux), oldpad);
gst_flow_combiner_remove_pad (qtdemux->flowcombiner, oldpad);
diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
index 165435c..0b9a4f3 100644
--- a/gst/isomp4/qtdemux.h
+++ b/gst/isomp4/qtdemux.h
@@ -89,7 +89,6 @@
gboolean posted_redirect;
/* push based variables */
- gboolean pending_configure;
guint neededbytes;
guint todrop;
GstAdapter *adapter;
@@ -118,6 +117,7 @@
/* configured playback region */
GstSegment segment;
GstEvent *pending_newsegment;
+ guint32 segment_seqnum;
gboolean upstream_format_is_time; /* qtdemux received upstream
* newsegment in TIME format which likely
* means that upstream is driving the pipeline
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 391e274..c82d84e 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -2228,6 +2228,7 @@
demux->to_time = demux->common.segment.position;
else
demux->to_time = GST_CLOCK_TIME_NONE;
+ demux->segment_seqnum = seqnum;
GST_OBJECT_UNLOCK (demux);
/* restart our task since it might have been stopped when we did the
@@ -2753,8 +2754,6 @@
{
gint stream_nr;
- GST_OBJECT_LOCK (demux);
-
g_assert (demux->common.num_streams == demux->common.src->len);
for (stream_nr = 0; stream_nr < demux->common.src->len; stream_nr++) {
GstMatroskaTrackContext *stream;
@@ -2779,7 +2778,6 @@
}
}
- GST_OBJECT_UNLOCK (demux);
}
static GstFlowReturn
@@ -4734,6 +4732,8 @@
}
if (demux->common.segment.flags & GST_SEEK_FLAG_SEGMENT) {
+ GstEvent *event;
+ GstMessage *msg;
gint64 stop;
/* for segment playback we need to post when (in stream time)
@@ -4742,11 +4742,16 @@
stop = demux->last_stop_end;
GST_LOG_OBJECT (demux, "Sending segment done, at end of segment");
- gst_element_post_message (GST_ELEMENT (demux),
- gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
- stop));
- gst_matroska_demux_send_event (demux,
- gst_event_new_segment_done (GST_FORMAT_TIME, stop));
+ msg = gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
+ stop);
+ if (demux->segment_seqnum)
+ gst_message_set_seqnum (msg, demux->segment_seqnum);
+ gst_element_post_message (GST_ELEMENT (demux), msg);
+
+ event = gst_event_new_segment_done (GST_FORMAT_TIME, stop);
+ if (demux->segment_seqnum)
+ gst_event_set_seqnum (event, demux->segment_seqnum);
+ gst_matroska_demux_send_event (demux, event);
} else {
push_eos = TRUE;
}
@@ -4757,9 +4762,14 @@
push_eos = TRUE;
}
if (push_eos) {
+ GstEvent *event;
+
/* send EOS, and prevent hanging if no streams yet */
GST_LOG_OBJECT (demux, "Sending EOS, at end of stream");
- if (!gst_matroska_demux_send_event (demux, gst_event_new_eos ()) &&
+ event = gst_event_new_eos ();
+ if (demux->segment_seqnum)
+ gst_event_set_seqnum (event, demux->segment_seqnum);
+ if (!gst_matroska_demux_send_event (demux, event) &&
(ret == GST_FLOW_EOS)) {
GST_ELEMENT_ERROR (demux, STREAM, DEMUX,
(NULL), ("got eos but no streams (yet)"));
diff --git a/gst/multifile/gstsplitmuxpartreader.c b/gst/multifile/gstsplitmuxpartreader.c
index 2ba5e00..5e98166 100644
--- a/gst/multifile/gstsplitmuxpartreader.c
+++ b/gst/multifile/gstsplitmuxpartreader.c
@@ -737,8 +737,11 @@
/* Look up or create the output pad */
if (reader->get_pad_cb)
out_pad = reader->get_pad_cb (reader, pad, reader->cb_data);
- if (out_pad == NULL)
+ if (out_pad == NULL) {
+ GST_DEBUG_OBJECT (reader,
+ "No output pad for %" GST_PTR_FORMAT ". Ignoring", pad);
return;
+ }
/* Create our proxy pad to interact with this new pad */
proxy_pad = gst_splitmux_part_reader_new_proxy_pad (reader, out_pad);
@@ -911,16 +914,16 @@
return;
}
- gst_element_set_locked_state (demux, TRUE);
- gst_bin_add (GST_BIN_CAST (reader), demux);
- gst_element_link_pads (reader->typefind, "src", demux, NULL);
- gst_element_sync_state_with_parent (reader->demux);
- gst_element_set_locked_state (demux, FALSE);
-
/* Connect to demux signals */
g_signal_connect (demux,
"pad-added", G_CALLBACK (new_decoded_pad_added_cb), reader);
g_signal_connect (demux, "no-more-pads", G_CALLBACK (no_more_pads), reader);
+
+ gst_element_set_locked_state (demux, TRUE);
+ gst_bin_add (GST_BIN_CAST (reader), demux);
+ gst_element_link_pads (reader->typefind, "src", demux, NULL);
+ gst_element_set_state (reader->demux, GST_STATE_TARGET (reader));
+ gst_element_set_locked_state (demux, FALSE);
}
static void
diff --git a/gst/multifile/gstsplitmuxsink.c b/gst/multifile/gstsplitmuxsink.c
index e547cbe..ae9b7e8 100644
--- a/gst/multifile/gstsplitmuxsink.c
+++ b/gst/multifile/gstsplitmuxsink.c
@@ -248,6 +248,7 @@
splitmux->max_files = DEFAULT_MAX_FILES;
GST_OBJECT_FLAG_SET (splitmux, GST_ELEMENT_FLAG_SINK);
+ g_object_set (splitmux, "async-handling", TRUE, NULL);
}
static void
@@ -590,7 +591,7 @@
GstSplitMuxSink *splitmux = ctx->splitmux;
MqStreamBuf *buf_info = NULL;
- GST_LOG_OBJECT (pad, "Fired probe type 0x%x\n", info->type);
+ GST_LOG_OBJECT (pad, "Fired probe type 0x%x", info->type);
/* FIXME: Handle buffer lists, until then make it clear they won't work */
if (info->type & GST_PAD_PROBE_TYPE_BUFFER_LIST) {
@@ -755,13 +756,17 @@
start_next_fragment (GstSplitMuxSink * splitmux)
{
/* 1 change to new file */
+ gst_element_set_locked_state (splitmux->muxer, TRUE);
+ gst_element_set_locked_state (splitmux->active_sink, TRUE);
gst_element_set_state (splitmux->muxer, GST_STATE_NULL);
gst_element_set_state (splitmux->active_sink, GST_STATE_NULL);
set_next_filename (splitmux);
- gst_element_sync_state_with_parent (splitmux->active_sink);
- gst_element_sync_state_with_parent (splitmux->muxer);
+ gst_element_set_state (splitmux->active_sink, GST_STATE_TARGET (splitmux));
+ gst_element_set_state (splitmux->muxer, GST_STATE_TARGET (splitmux));
+ gst_element_set_locked_state (splitmux->muxer, FALSE);
+ gst_element_set_locked_state (splitmux->active_sink, FALSE);
g_list_foreach (splitmux->contexts, (GFunc) restart_context, splitmux);
@@ -942,6 +947,11 @@
}
}
+ /* If upstream reached EOS we are not expecting more data, no need to wait
+ * here. */
+ if (ctx->in_eos)
+ return;
+
/* Some pad is not yet ready, or GOP is being pushed
* either way, sleep and wait to get woken */
current_max_in_running_time = splitmux->max_in_running_time;
diff --git a/gst/rtp/gstrtpj2kpay.c b/gst/rtp/gstrtpj2kpay.c
index 2791ef4..964a090 100644
--- a/gst/rtp/gstrtpj2kpay.c
+++ b/gst/rtp/gstrtpj2kpay.c
@@ -502,6 +502,7 @@
offset = pos;
} while (offset < map.size);
+ gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
/* push the whole buffer list at once */
diff --git a/gst/rtp/gstrtpjpegdepay.c b/gst/rtp/gstrtpjpegdepay.c
index c804aea..d968781 100644
--- a/gst/rtp/gstrtpjpegdepay.c
+++ b/gst/rtp/gstrtpjpegdepay.c
@@ -531,6 +531,13 @@
width = payload[6] * 8;
height = payload[7] * 8;
+ /* saw a packet with fragment offset > 0 and we don't already have data queued
+ * up (most importantly, we don't have a header for this data) -- drop it
+ * XXX: maybe we can check if the jpeg is progressive and salvage the data?
+ * XXX: not implemented yet because jpegenc can't create progressive jpegs */
+ if (frag_offset > 0 && gst_adapter_available (rtpjpegdepay->adapter) == 0)
+ goto no_header_packet;
+
/* allow frame dimensions > 2040, passed in SDP session or media attributes
* from gstrtspsrc.c (gst_rtspsrc_sdp_attributes_to_caps), or in caps */
if (!width)
@@ -747,6 +754,12 @@
gst_adapter_available (rtpjpegdepay->adapter));
return NULL;
}
+no_header_packet:
+ {
+ GST_WARNING_OBJECT (rtpjpegdepay,
+ "discarding data packets received when we have no header");
+ return NULL;
+ }
}
diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
index 610eff2..e201723 100644
--- a/gst/rtpmanager/gstrtpjitterbuffer.c
+++ b/gst/rtpmanager/gstrtpjitterbuffer.c
@@ -1227,11 +1227,12 @@
static gboolean
gst_jitter_buffer_sink_parse_caps (GstRtpJitterBuffer * jitterbuffer,
- GstCaps * caps)
+ GstCaps * caps, gint pt)
{
GstRtpJitterBufferPrivate *priv;
GstStructure *caps_struct;
guint val;
+ gint payload = -1;
GstClockTime tval;
priv = jitterbuffer->priv;
@@ -1239,7 +1240,19 @@
/* first parse the caps */
caps_struct = gst_caps_get_structure (caps, 0);
- GST_DEBUG_OBJECT (jitterbuffer, "got caps");
+ GST_DEBUG_OBJECT (jitterbuffer, "got caps %" GST_PTR_FORMAT, caps);
+
+ if (gst_structure_get_int (caps_struct, "payload", &payload) && pt != -1
+ && payload != pt) {
+ GST_ERROR_OBJECT (jitterbuffer,
+ "Got caps with wrong payload type (got %d, expected %d)", payload, pt);
+ return FALSE;
+ }
+
+ if (payload != -1) {
+ GST_DEBUG_OBJECT (jitterbuffer, "Got payload type %d", payload);
+ priv->last_pt = payload;
+ }
/* we need a clock-rate to convert the rtp timestamps to GStreamer time and to
* measure the amount of data in the buffer */
@@ -1542,7 +1555,7 @@
GstCaps *caps;
gst_event_parse_caps (event, &caps);
- gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps);
+ gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps, -1);
break;
}
case GST_EVENT_SEGMENT:
@@ -1714,7 +1727,7 @@
if (!caps)
goto no_caps;
- res = gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps);
+ res = gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps, pt);
gst_caps_unref (caps);
if (G_UNLIKELY (!res))
@@ -1982,6 +1995,30 @@
return delay;
}
+/* Check if packet with seqnum is already considered definitely lost by being
+ * part of a "lost timer" for multiple packets */
+static gboolean
+already_lost (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum)
+{
+ GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
+ gint i, len;
+
+ len = priv->timers->len;
+ for (i = 0; i < len; i++) {
+ TimerData *test = &g_array_index (priv->timers, TimerData, i);
+ gint gap = gst_rtp_buffer_compare_seqnum (test->seqnum, seqnum);
+
+ if (test->num > 1 && test->type == TIMER_TYPE_LOST && gap >= 0 &&
+ gap < test->num) {
+ GST_DEBUG ("seqnum #%d already considered definitely lost (#%d->#%d)",
+ seqnum, test->seqnum, (test->seqnum + test->num - 1) & 0xffff);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
/* we just received a packet with seqnum and dts.
*
* First check for old seqnum that we are still expecting. If the gap with the
@@ -2188,7 +2225,7 @@
GST_DEBUG_OBJECT (jitterbuffer,
"lost packets (%d, #%d->#%d) duration too large %" GST_TIME_FORMAT
" > %" GST_TIME_FORMAT ", consider %u lost (%" GST_TIME_FORMAT ")",
- gap, expected, seqnum, GST_TIME_ARGS (total_duration),
+ gap, expected, seqnum - 1, GST_TIME_ARGS (total_duration),
GST_TIME_ARGS (priv->latency_ns), lost_packets,
GST_TIME_ARGS (gap_time));
@@ -2481,7 +2518,7 @@
/* Try to get the clock-rate from the caps first if we can. If there are no
* caps we must fire the signal to get the clock-rate. */
if ((caps = gst_pad_get_current_caps (pad))) {
- gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps);
+ gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps, pt);
gst_caps_unref (caps);
}
}
@@ -2700,6 +2737,9 @@
goto too_late;
}
+ if (already_lost (jitterbuffer, seqnum))
+ goto already_lost;
+
/* let's drop oldest packet if the queue is already full and drop-on-latency
* is set. We can only do this when there actually is a latency. When no
* latency is set, we just pump it in the queue and let the other end push it
@@ -2816,6 +2856,14 @@
gst_buffer_unref (buffer);
goto finished;
}
+already_lost:
+ {
+ GST_DEBUG_OBJECT (jitterbuffer, "Packet #%d too late as it was already "
+ "considered lost", seqnum);
+ priv->num_late++;
+ gst_buffer_unref (buffer);
+ goto finished;
+ }
duplicate:
{
GST_DEBUG_OBJECT (jitterbuffer, "Duplicate packet #%d detected, dropping",
diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c
index 75908c0..c1bfdd3 100644
--- a/gst/rtpmanager/rtpsession.c
+++ b/gst/rtpmanager/rtpsession.c
@@ -726,6 +726,7 @@
GValue source_stats_v = G_VALUE_INIT;
guint size;
+ RTP_SESSION_LOCK (sess);
s = gst_structure_new ("application/x-rtp-session-stats",
"rtx-drop-count", G_TYPE_UINT, sess->stats.nacks_dropped,
"sent-nack-count", G_TYPE_UINT, sess->stats.nacks_sent,
@@ -735,6 +736,7 @@
source_stats = g_value_array_new (size);
g_hash_table_foreach (sess->ssrcs[sess->mask_idx],
(GHFunc) create_source_stats, source_stats);
+ RTP_SESSION_UNLOCK (sess);
g_value_init (&source_stats_v, G_TYPE_VALUE_ARRAY);
g_value_take_boxed (&source_stats_v, source_stats);
@@ -2423,21 +2425,18 @@
for (i = 0; i < count; i++) {
guint32 ssrc;
RTPSource *source;
- gboolean created, prevactive, prevsender;
+ gboolean prevactive, prevsender;
guint pmembers, members;
ssrc = gst_rtcp_packet_bye_get_nth_ssrc (packet, i);
GST_DEBUG ("SSRC: %08x", ssrc);
/* find src and mark bye, no probation when dealing with RTCP */
- source = obtain_source (sess, ssrc, &created, pinfo, FALSE);
- if (!source)
- return;
-
- if (source->internal) {
- /* our own source, something weird with this packet */
- g_object_unref (source);
- continue;
+ source = find_source (sess, ssrc);
+ if (!source || source->internal) {
+ GST_DEBUG ("Ignoring suspicious BYE packet (reason: %s)",
+ !source ? "can't find source" : "has internal source SSRC");
+ break;
}
/* store time for when we need to time out this source */
@@ -2495,12 +2494,7 @@
}
}
- if (created)
- on_new_ssrc (sess, source);
-
on_bye_ssrc (sess, source);
-
- g_object_unref (source);
}
if (reconsider) {
RTP_SESSION_UNLOCK (sess);
@@ -2509,6 +2503,7 @@
sess->callbacks.reconsider (sess, sess->reconsider_user_data);
RTP_SESSION_LOCK (sess);
}
+
g_free (reason);
}
@@ -3982,9 +3977,6 @@
/* update point-to-point status */
session_update_ptp (sess);
- /* notify about updated statistics */
- g_object_notify (G_OBJECT (sess), "stats");
-
/* see if we need to generate SR or RR packets */
if (!is_rtcp_time (sess, current_time, &data))
goto done;
@@ -4024,6 +4016,9 @@
done:
RTP_SESSION_UNLOCK (sess);
+ /* notify about updated statistics */
+ g_object_notify (G_OBJECT (sess), "stats");
+
/* push out the RTCP packets */
while ((output = g_queue_pop_head (&data.output))) {
gboolean do_not_suppress, empty_buffer;
diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c
index 0f265a1..362fed2 100644
--- a/gst/rtsp/gstrtspsrc.c
+++ b/gst/rtsp/gstrtspsrc.c
@@ -3930,8 +3930,10 @@
GST_DEBUG_OBJECT (src, "stream %p, pt %d, caps %" GST_PTR_FORMAT, stream,
item->pt, caps);
- if (item->pt == stream->default_pt && stream->udpsrc[0]) {
- g_object_set (stream->udpsrc[0], "caps", caps, NULL);
+ if (item->pt == stream->default_pt) {
+ if (stream->udpsrc[0])
+ g_object_set (stream->udpsrc[0], "caps", caps, NULL);
+ stream->need_caps = TRUE;
}
}
}
@@ -4423,6 +4425,7 @@
gst_pad_send_event (ostream->channelpad[0],
gst_event_new_caps (caps));
}
+ ostream->need_caps = FALSE;
if (ostream->profile == GST_RTSP_PROFILE_SAVP ||
ostream->profile == GST_RTSP_PROFILE_SAVPF)
@@ -4486,6 +4489,28 @@
gst_rtspsrc_push_event (src, gst_event_new_segment (&segment));
}
+ if (stream->need_caps) {
+ GstCaps *caps;
+
+ if ((caps = stream_get_caps_for_pt (stream, stream->default_pt))) {
+ /* only streams that have a connection to the outside world */
+ if (stream->setup) {
+ /* Only need to update the TCP caps here, UDP is already handled */
+ if (stream->channelpad[0]) {
+ if (GST_PAD_IS_SRC (stream->channelpad[0]))
+ gst_pad_push_event (stream->channelpad[0],
+ gst_event_new_caps (caps));
+ else
+ gst_pad_send_event (stream->channelpad[0],
+ gst_event_new_caps (caps));
+ }
+ stream->need_caps = FALSE;
+ }
+ }
+
+ stream->need_caps = FALSE;
+ }
+
if (stream->discont && !is_rtcp) {
/* mark first RTP buffer as discont */
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
@@ -7139,7 +7164,10 @@
item->caps = gst_caps_make_writable (item->caps);
s = gst_caps_get_structure (item->caps, 0);
gst_structure_remove_fields (s, "clock-base", "seqnum-base", NULL);
+ if (item->pt == stream->default_pt && stream->udpsrc[0])
+ g_object_set (stream->udpsrc[0], "caps", item->caps, NULL);
}
+ stream->need_caps = TRUE;
}
static GstRTSPResult
@@ -7772,6 +7800,16 @@
ret = GST_STATE_CHANGE_SUCCESS;
break;
default:
+ /* Otherwise it's success, we don't want to return spurious
+ * NO_PREROLL or ASYNC from internal elements as we care for
+ * state changes ourselves here
+ *
+ * This is to catch PAUSED->PAUSED and PLAYING->PLAYING transitions.
+ */
+ if (GST_STATE_TRANSITION_NEXT (transition) == GST_STATE_PAUSED)
+ ret = GST_STATE_CHANGE_NO_PREROLL;
+ else
+ ret = GST_STATE_CHANGE_SUCCESS;
break;
}
diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h
index 0781884..e317c56 100644
--- a/gst/rtsp/gstrtspsrc.h
+++ b/gst/rtsp/gstrtspsrc.h
@@ -103,6 +103,7 @@
gboolean skipped;
gboolean eos;
gboolean discont;
+ gboolean need_caps;
/* for interleaved mode */
guint8 channel[2];
diff --git a/gst/udp/gstmultiudpsink.c b/gst/udp/gstmultiudpsink.c
index 905e3fd..4c925f2 100644
--- a/gst/udp/gstmultiudpsink.c
+++ b/gst/udp/gstmultiudpsink.c
@@ -1312,7 +1312,7 @@
if (sink->socket_v6) {
GST_DEBUG_OBJECT (sink, "using configured IPv6 socket");
- g_return_val_if_fail (g_socket_get_family (sink->socket) !=
+ g_return_val_if_fail (!sink->socket || g_socket_get_family (sink->socket) !=
G_SOCKET_FAMILY_IPV6, FALSE);
if (sink->used_socket_v6 && sink->used_socket_v6 != sink->socket_v6) {
diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c
index 1525b05..106c67c 100644
--- a/gst/udp/gstudpsrc.c
+++ b/gst/udp/gstudpsrc.c
@@ -942,20 +942,10 @@
GST_DEBUG_OBJECT (src, "binding on port %d", src->port);
- /* On Windows it's not possible to bind to a multicast address
- * but the OS will make sure to filter out all packets that
- * arrive not for the multicast address the socket joined.
- *
- * On Linux and others it is necessary to bind to a multicast
- * address to let the OS filter out all packets that are received
- * on the same port but for different addresses than the multicast
- * address
- */
-#ifdef G_OS_WIN32
+ /* For multicast, bind to ANY and join the multicast group later */
if (g_inet_address_get_is_multicast (addr))
bind_addr = g_inet_address_new_any (g_inet_address_get_family (addr));
else
-#endif
bind_addr = G_INET_ADDRESS (g_object_ref (addr));
g_object_unref (addr);
@@ -981,25 +971,22 @@
if (!local_addr)
goto getsockname_error;
- /* See above for the reasons. Without this we would behave different on
- * Windows and Linux, joining multicast groups below for provided sockets
- * on Linux but not on Windows
- */
-#ifdef G_OS_WIN32
addr = gst_udpsrc_resolve (src, src->address);
if (!addr)
goto name_resolve;
+ /* If bound to ANY and address points to a multicast address, make
+ * sure that address is not overridden with ANY but we have the
+ * opportunity later to join the multicast address. This ensures that we
+ * have the same behaviour as for sockets created by udpsrc */
if (!src->auto_multicast ||
!g_inet_address_get_is_any (g_inet_socket_address_get_address
(local_addr))
|| !g_inet_address_get_is_multicast (addr)) {
g_object_unref (addr);
-#endif
if (src->addr)
g_object_unref (src->addr);
src->addr = local_addr;
-#ifdef G_OS_WIN32
} else {
g_object_unref (local_addr);
if (src->addr)
@@ -1008,7 +995,6 @@
G_INET_SOCKET_ADDRESS (g_inet_socket_address_new (addr, src->port));
g_object_unref (addr);
}
-#endif
}
{
diff --git a/po/af.gmo b/po/af.gmo
index 26c39a7..1096f00 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 4f17087..274e27e 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins 0.7.6\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2004-03-18 14:16+0200\n"
"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index 6e9a335..ebfa36e 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index ff6c60b..fe9e1de 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-0.8.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2004-03-19 18:29+0200\n"
"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 4f202da..d466bf1 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 70fa607..49850dd 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-21 21:03+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 12f55ee..895ec9f 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 397588f..72cc7a4 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.28.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2012-01-01 14:19+0100\n"
"Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 6df8ae6..138c84f 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 6bc42e6..800d129 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-27 16:40+0100\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 73a3a39..0bd9643 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 5346e9f..15148ff 100644
--- a/po/da.po
+++ b/po/da.po
@@ -11,7 +11,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-03-27 23:54+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 5a9cde3..0390ebd 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 81051a9..83b3994 100644
--- a/po/de.po
+++ b/po/de.po
@@ -14,7 +14,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-22 23:42+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 0dee157..3b37aaf 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index c6a69fc..7c3006b 100644
--- a/po/el.po
+++ b/po/el.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.28.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2012-05-05 19:05+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 e79967e..4c10bd5 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 cfa1973..6363a7a 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins 0.8.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2004-04-26 10:41-0400\n"
"Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
"Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 2e691b0..1e0da0b 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index b253f4e..e6b3de4 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.28.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2011-06-04 21:48+0100\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 518f513..4e1780e 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index f01e92c..0adc3a8 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.26.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2011-02-12 18:30+0100\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 e891514..ca2b9ff 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index d46e77a..9016d9b 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-0.10.18.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2010-03-25 12:37+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 780c0c8..49eb297 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index cee1bf6..dd9a749 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.25.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2010-11-17 23:03+0200\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 3b73106..1acd5f5 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 332fd7f..c039822 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-20 16:27+0100\n"
"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index bbfd2c9..01969b0 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 8b2a1b9..d04aeab 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.0.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2012-12-15 03:46+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot
index da0b1d7..fcb59e1 100644
--- a/po/gst-plugins-good-1.0.pot
+++ b/po/gst-plugins-good-1.0.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good 1.8.1\n"
+"Project-Id-Version: gst-plugins-good 1.8.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,10 +20,10 @@
msgid "Jack server not found"
msgstr ""
-#: ext/jpeg/gstjpegdec.c:917 ext/jpeg/gstjpegdec.c:1183
-#: ext/jpeg/gstjpegdec.c:1195 ext/jpeg/gstjpegdec.c:1224
-#: ext/jpeg/gstjpegdec.c:1233 ext/jpeg/gstjpegdec.c:1242
-#: ext/jpeg/gstjpegdec.c:1250
+#: ext/jpeg/gstjpegdec.c:915 ext/jpeg/gstjpegdec.c:1181
+#: ext/jpeg/gstjpegdec.c:1193 ext/jpeg/gstjpegdec.c:1222
+#: ext/jpeg/gstjpegdec.c:1231 ext/jpeg/gstjpegdec.c:1240
+#: ext/jpeg/gstjpegdec.c:1248
msgid "Failed to decode JPEG image"
msgstr ""
@@ -66,47 +66,47 @@
msgid "Server sent bad data."
msgstr ""
-#: gst/avi/gstavidemux.c:5690
+#: gst/avi/gstavidemux.c:5705
msgid "Internal data stream error."
msgstr ""
-#: gst/avi/gstavimux.c:1819
+#: gst/avi/gstavimux.c:1828
msgid "No or invalid input audio, AVI stream will be corrupt."
msgstr ""
-#: gst/isomp4/qtdemux.c:645 gst/isomp4/qtdemux.c:649
+#: gst/isomp4/qtdemux.c:648 gst/isomp4/qtdemux.c:652
msgid "This file contains no playable streams."
msgstr ""
-#: gst/isomp4/qtdemux.c:695 gst/isomp4/qtdemux.c:5748 gst/isomp4/qtdemux.c:5815
-#: gst/isomp4/qtdemux.c:6084
+#: gst/isomp4/qtdemux.c:698 gst/isomp4/qtdemux.c:5845 gst/isomp4/qtdemux.c:5912
+#: gst/isomp4/qtdemux.c:6167
msgid "This file is invalid and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:2495
+#: gst/isomp4/qtdemux.c:2504
msgid "Cannot play stream because it is encrypted with PlayReady DRM."
msgstr ""
-#: gst/isomp4/qtdemux.c:3581 gst/isomp4/qtdemux.c:6817
-#: gst/isomp4/qtdemux.c:6824 gst/isomp4/qtdemux.c:7637
-#: gst/isomp4/qtdemux.c:8066 gst/isomp4/qtdemux.c:8073
-#: gst/isomp4/qtdemux.c:10423
+#: gst/isomp4/qtdemux.c:3604 gst/isomp4/qtdemux.c:6900
+#: gst/isomp4/qtdemux.c:6907 gst/isomp4/qtdemux.c:7729
+#: gst/isomp4/qtdemux.c:8158 gst/isomp4/qtdemux.c:8165
+#: gst/isomp4/qtdemux.c:10530
msgid "This file is corrupt and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:3823
+#: gst/isomp4/qtdemux.c:3846
msgid "Invalid atom size."
msgstr ""
-#: gst/isomp4/qtdemux.c:3901
+#: gst/isomp4/qtdemux.c:3924
msgid "This file is incomplete and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:9032
+#: gst/isomp4/qtdemux.c:9139
msgid "The video in this file might not play correctly."
msgstr ""
-#: gst/isomp4/qtdemux.c:10464
+#: gst/isomp4/qtdemux.c:10571
#, c-format
msgid "This file contains too many streams. Only playing first %d"
msgstr ""
@@ -115,13 +115,13 @@
msgid "Internal data flow error."
msgstr ""
-#: gst/rtsp/gstrtspsrc.c:6381
+#: gst/rtsp/gstrtspsrc.c:6406
msgid ""
"No supported stream was found. You might need to install a GStreamer RTSP "
"extension plugin for Real media streams."
msgstr ""
-#: gst/rtsp/gstrtspsrc.c:6386
+#: gst/rtsp/gstrtspsrc.c:6411
msgid ""
"No supported stream was found. You might need to allow more transport "
"protocols or may otherwise be missing the right GStreamer RTSP extension "
@@ -266,75 +266,75 @@
msgid "Failed to enumerate possible video formats device '%s' can work with"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:2798
+#: sys/v4l2/gstv4l2object.c:2799
#, c-format
msgid "Could not map buffers from device '%s'"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:2806
+#: sys/v4l2/gstv4l2object.c:2807
#, c-format
msgid "The driver of device '%s' does not support the IO method %d"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:2813
+#: sys/v4l2/gstv4l2object.c:2814
#, c-format
msgid "The driver of device '%s' does not support any known IO method."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3436 sys/v4l2/gstv4l2object.c:3447
+#: sys/v4l2/gstv4l2object.c:3437 sys/v4l2/gstv4l2object.c:3448
#, c-format
msgid "Device '%s' is busy"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3453 sys/v4l2/gstv4l2object.c:3465
+#: sys/v4l2/gstv4l2object.c:3454 sys/v4l2/gstv4l2object.c:3466
#, c-format
msgid "Device '%s' cannot capture at %dx%d"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3476
+#: sys/v4l2/gstv4l2object.c:3477
#, c-format
msgid "Device '%s' cannot capture in the specified format"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3489
+#: sys/v4l2/gstv4l2object.c:3490
#, c-format
msgid "Device '%s' does support non-contiguous planes"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3500
+#: sys/v4l2/gstv4l2object.c:3501
#, c-format
msgid "Could not get parameters on device '%s'"
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3508
+#: sys/v4l2/gstv4l2object.c:3509
msgid "Video device did not accept new frame rate setting."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3613
+#: sys/v4l2/gstv4l2object.c:3616
msgid "Video device did not provide output format."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3619
+#: sys/v4l2/gstv4l2object.c:3622
msgid "Video device returned invalid dimensions."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3627
+#: sys/v4l2/gstv4l2object.c:3630
msgid "Video devices uses an unsupported interlacing method."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:3634
+#: sys/v4l2/gstv4l2object.c:3637
msgid "Video devices uses an unsupported pixel format."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:4059
+#: sys/v4l2/gstv4l2object.c:4064
msgid "Failed to configure internal buffer pool."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:4065
+#: sys/v4l2/gstv4l2object.c:4070
msgid "Video device did not suggest any buffer size."
msgstr ""
-#: sys/v4l2/gstv4l2object.c:4080
+#: sys/v4l2/gstv4l2object.c:4085
msgid "No downstream pool to import from."
msgstr ""
@@ -368,11 +368,11 @@
msgid "Failed to change mute state for device '%s'."
msgstr ""
-#: sys/v4l2/gstv4l2sink.c:615
+#: sys/v4l2/gstv4l2sink.c:620
msgid "Failed to allocated required memory."
msgstr ""
-#: sys/v4l2/gstv4l2src.c:510 sys/v4l2/gstv4l2videodec.c:610
+#: sys/v4l2/gstv4l2src.c:543 sys/v4l2/gstv4l2videodec.c:709
msgid "Failed to allocate required memory."
msgstr ""
@@ -396,11 +396,11 @@
msgid "Encoder on device %s has no supported output format"
msgstr ""
-#: sys/v4l2/gstv4l2videodec.c:624
+#: sys/v4l2/gstv4l2videodec.c:723
msgid "Failed to start decoding thread."
msgstr ""
-#: sys/v4l2/gstv4l2videodec.c:632
+#: sys/v4l2/gstv4l2videodec.c:731
msgid "Failed to process frame."
msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 3fc43cd..437abd0 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 0618c48..c10dee2 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,160 +1,166 @@
# Translation of gst-plugins-good to Croatian.
# This file is put in the public domain.
-# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
#
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
+# Božidar Putanec <bozidarp@yahoo.com>, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good 0.10.28.2\n"
+"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
-"PO-Revision-Date: 2012-04-16 03:04+0200\n"
-"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
+"PO-Revision-Date: 2016-05-27 12:47-0700\n"
+"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
-"Language: \n"
+"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"X-Generator: Lokalize 2.0\n"
msgid "Jack server not found"
-msgstr ""
+msgstr "‘Jack’ poslužitelj nije pronađen"
msgid "Failed to decode JPEG image"
-msgstr "Nisam uspio dekodirati JPEG sliku"
+msgstr "Nije uspjelo dekodirati JPEG sliku"
#. TRANSLATORS: 'song title' by 'artist name'
#, c-format
msgid "'%s' by '%s'"
-msgstr "„%s” („%s”)"
+msgstr "‘%s’ (‘%s’)"
msgid "Could not connect to server"
-msgstr "Ne mogu se spojiti na poslužitelj"
+msgstr "Spajanje na poslužitelj nije moguće"
msgid "No URL set."
-msgstr "Nije postavljen URL."
+msgstr "URL adresa nije imenovana."
msgid "Server does not support seeking."
-msgstr "Poslužitelj ne podržava traženje"
+msgstr "Poslužitelj ne podržava traženje."
msgid "Could not resolve server name."
-msgstr "Rezolucija imena poslužitelja nije moguća."
+msgstr "Nije moguće razriješiti ime poslužitelja."
msgid "Could not establish connection to server."
-msgstr "Ne mogu ostvariti vezu prema poslužitelju."
+msgstr "Nije moguće uspostaviti vezu s poslužiteljem."
msgid "Secure connection setup failed."
-msgstr "Postavljanje sigurne veze nije uspjelo."
+msgstr "Uspostavljanje sigurne veze nije uspjelo."
-#, fuzzy
msgid ""
"A network error occurred, or the server closed the connection unexpectedly."
msgstr ""
-"Dogodila se greška mreže, ili je poslužitelj neočekivano zatvorio vezu."
+"Dogodila se mrežna greška, ili je poslužitelj neočekivano zatvorio vezu."
msgid "Server sent bad data."
msgstr "Poslužitelj je poslao neispravne podatke."
msgid "Internal data stream error."
-msgstr "Greška unutarnjeg niza podataka."
+msgstr "Interna greška toka (stream) podataka."
msgid "No or invalid input audio, AVI stream will be corrupt."
-msgstr "AVI niz nema ili ima neispravan ulazni zvuk, zbog čega je oštećen."
+msgstr "Nema audio ulaza ili je neispravan, AVI stream će biti iskvaren."
msgid "This file contains no playable streams."
-msgstr "Datoteka ne sadrži nizove koji se mogu reproducirati."
+msgstr "Ova datoteka ne sadrži nijedan upotrebljivi stream (tok podataka)."
msgid "This file is invalid and cannot be played."
msgstr "Datoteka je neispravna i ne može se reproducirati."
msgid "Cannot play stream because it is encrypted with PlayReady DRM."
msgstr ""
+"Ovaj stream nije moguće reproducirati jer je kriptiran s PlayReady DRM."
msgid "This file is corrupt and cannot be played."
-msgstr "Datoteka je oštećena i ne može se reproducirati."
+msgstr "Datoteka je iskvarena i ne može se reproducirati."
msgid "Invalid atom size."
-msgstr "Neispravna veličina elementa."
+msgstr "Veličina atoma je neispravna."
msgid "This file is incomplete and cannot be played."
-msgstr "Ova datoteka je nepotpuna i ne može se reproducirati."
+msgstr "Datoteka je nepotpuna i ne može se reproducirati."
msgid "The video in this file might not play correctly."
-msgstr "Videozapis u ovoj datoteci se možda neće ispravno reproducirati."
+msgstr "Video iz ove datoteke se možda neće ispravno reproducirati."
#, c-format
msgid "This file contains too many streams. Only playing first %d"
-msgstr "Ova datoteka sadrži previše nizova. Reproduciram samo prvih %d"
+msgstr ""
+"U ovoj datoteci ima previše streamova (streams). Samo prvih %d će se "
+"reproducirati"
msgid "Internal data flow error."
-msgstr "Greška unutarnjeg toka podataka."
+msgstr "Interna greška protoka podataka."
+# https://gstreamer.freedesktop.org/documentation/rtp.html
msgid ""
"No supported stream was found. You might need to install a GStreamer RTSP "
"extension plugin for Real media streams."
msgstr ""
-"Nisu pronađeni podržani nizovi. Morate instalirati GStreamer RTSP priključak "
-"proširenja za Real medijske nizove."
+"Nijedan podržani stream nije nađen. Možda ćete morati instalirati GStreamer "
+"RTSP dodatni plugin za Real medijske streamove."
msgid ""
"No supported stream was found. You might need to allow more transport "
"protocols or may otherwise be missing the right GStreamer RTSP extension "
"plugin."
msgstr ""
-"Nisu pronađeni podržani nizovi. Morate dozvoliti više protokola prijenosa "
-"ili vam možda nedostaje odgovarajući GStreamer RTSP priključak proširenja."
+"Nijedan podržani stream nije nađen. Možda ćete morati dopustiti više "
+"prijenosnih protokola ili možda vam nedostaje odgovarajući GStreamer RTSP "
+"dodatni plugin."
msgid ""
"Could not open audio device for playback. Device is being used by another "
"application."
msgstr ""
-"Ne mogu otvoriti zvučni uređaj za reprodukciju. Uređaj trenutno koristi "
-"drugi program."
+"Audiouređaj nije moguće otvoriti za reprodukciju. Uređaj trenutačno koristi "
+"neka druga aplikacija."
msgid ""
"Could not open audio device for playback. You don't have permission to open "
"the device."
msgstr ""
-"Ne mogu otvoriti zvučni uređaj za reprodukciju. Nemate dozvole za otvaranje "
-"uređaja."
+"Audiouređaj nije moguće otvoriti za reprodukciju. Nemate dopuštenje za "
+"otvaranje uređaja."
msgid "Could not open audio device for playback."
-msgstr "Ne mogu otvoriti zvučni uređaj za reprodukciju."
+msgstr "Audiouređaj nije moguće otvoriti za reprodukciju."
msgid ""
"Could not open audio device for playback. This version of the Open Sound "
"System is not supported by this element."
msgstr ""
-"Ne mogu otvoriti zvučni uređaj za reprodukciju. Ovaj element ne podržava ovu "
-"inačicu Open Sound System sustava."
+"Audiouređaj nije moguće otvoriti za reprodukciju. Ovaj element ne podržava "
+"ovu inačicu Open Sound System."
msgid "Playback is not supported by this audio device."
-msgstr "Ovaj zvučni uređaj ne podržava reprodukciju."
+msgstr "Ovaj audiouređaj ne podržava reprodukciju."
msgid "Audio playback error."
-msgstr "Greška reprodukcije zvuka."
+msgstr "Greška u audio reprodukciji."
msgid "Recording is not supported by this audio device."
-msgstr "Ovaj zvučni uređaj ne podržava snimanje."
+msgstr "Ovaj audiouređaj ne podržava snimanje."
msgid "Error recording from audio device."
-msgstr "Greška snimanja sa zvučnog uređaja."
+msgstr "Greška snimanja s audiouređaja."
msgid ""
"Could not open audio device for recording. You don't have permission to open "
"the device."
msgstr ""
-"Ne mogu otvoriti zvučni uređaj za snimanje. Nemate dozvole za otvaranje "
+"Audiouređaj nije moguće otvoriti za snimanje. Nemate dopuštenje za otvaranje "
"uređaja."
msgid "Could not open audio device for recording."
-msgstr "Ne mogu otvoriti zvučni uređaj za snimanje."
+msgstr "Audiouređaj nije moguće otvoriti za snimanje."
msgid "CoreAudio device not found"
-msgstr ""
+msgstr "CoreAudio uređaj nije pronađen"
msgid "CoreAudio device could not be opened"
-msgstr ""
+msgstr "CoreAudio uređaj nije moguće otvoriti"
msgid "Record Source"
msgstr "Izvor snimanja"
@@ -177,13 +183,11 @@
msgid "AUX 2 In"
msgstr "AUX 2 ulaz"
-#, fuzzy
msgid "Codec Loopback"
-msgstr "Povratna petlja"
+msgstr "Kodek-povratna petlja"
-#, fuzzy
msgid "SunVTS Loopback"
-msgstr "Povratna petlja"
+msgstr "SunVTS-povratna petlja"
msgid "Volume"
msgstr "Glasnoća"
@@ -214,226 +218,223 @@
#, c-format
msgid "Error reading %d bytes from device '%s'."
-msgstr "Greška čitanja %d bajtova s uređaja „%s”."
+msgstr "Greška čitanja %d bajtova s uređaja ‘%s’."
#, c-format
msgid "Failed to enumerate possible video formats device '%s' can work with"
msgstr ""
+"Nije uspjelo nabrojati sve moguće video formate s kojima uređaj ‘%s’ može "
+"raditi"
#, c-format
msgid "Could not map buffers from device '%s'"
-msgstr "Ne mogu mapirati međuspremnike iz uređaja „%s”"
+msgstr "Nije moguće preslikati (map) međuspremnike iz uređaja ‘%s’"
-#, fuzzy, c-format
+#, c-format
msgid "The driver of device '%s' does not support the IO method %d"
-msgstr "Upravljački program uređaja „%s” ne podržava poznate metode snimanja."
+msgstr "Upravljački program uređaja ‘%s’ ne podržava IO metodu %d"
-#, fuzzy, c-format
+#, c-format
msgid "The driver of device '%s' does not support any known IO method."
-msgstr "Upravljački program uređaja „%s” ne podržava poznate metode snimanja."
+msgstr ""
+"Upravljački program uređaja ‘%s’ ne podržava nijednu poznatu IO metodu."
#, c-format
msgid "Device '%s' is busy"
-msgstr ""
+msgstr "Uređaj ‘%s’ je zauzet"
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' cannot capture at %dx%d"
-msgstr "Uređaj „%s” nije uređaj za snimanje."
+msgstr "Uređaj ‘%s’ ne može snimati s razlučivosti od %dx%d"
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' cannot capture in the specified format"
-msgstr "Uređaj „%s” nije uređaj za snimanje."
+msgstr "Uređaj ‘%s’ ne može snimati u specificiranom formatu."
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' does support non-contiguous planes"
-msgstr "Uređaj „%s” nije izlazni uređaj."
+msgstr "Device ‘%s’ ne podržava prekinute ravnine"
#, c-format
msgid "Could not get parameters on device '%s'"
-msgstr "Nisam uspio dobiti parametre uređaja „%s”"
+msgstr "Parametre uređaja ‘%s’ nije moguće dobiti"
-#, fuzzy
msgid "Video device did not accept new frame rate setting."
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Videouređaj nije prihvatio novu frekvenciju slika (ili poluslika)."
-#, fuzzy
msgid "Video device did not provide output format."
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Videouređaj nije predočio izlazni format."
msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Videouređaj je uzvratio s neispravnim dimenzijama."
-#, fuzzy
msgid "Video devices uses an unsupported interlacing method."
-msgstr "Upravljački program uređaja „%s” ne podržava poznate metode snimanja."
+msgstr ""
+"Videouređaj koristi nepodržanu metodu poluslika (prored i frekvenciju)."
msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Videouređaj koristi nepodržani format piksela."
msgid "Failed to configure internal buffer pool."
-msgstr ""
+msgstr "Nije uspjelo konfigurirati internu zalihu međuspremnika."
-#, fuzzy
msgid "Video device did not suggest any buffer size."
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Videouređaj nije predložio nijednu veličinu međuspremnika."
msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Nema se od nikuda uvesti ‘downstream’ zaliha."
-#, fuzzy, c-format
+# tuner > štelanje frekvencije, mijenjanje (biranje) kanala
+#, c-format
msgid "Failed to get settings of tuner %d on device '%s'."
-msgstr "Nisam uspio dobiti postavke birača %d uređaja „%s”."
+msgstr "Nije uspjelo dobiti postavke tunera %d na uređaj ‘%s’."
-#, fuzzy, c-format
+#, c-format
msgid "Error getting capabilities for device '%s'."
-msgstr "Greška čitanja %d bajtova s uređaja „%s”."
+msgstr "Greška pri dobivanju podataka o mogućnostima uređaja ‘%s’."
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' is not a tuner."
-msgstr "Uređaj „%s” nije izlazni uređaj."
+msgstr "Uređaj ‘%s’ nije tuner."
-#, fuzzy, c-format
+#, c-format
msgid "Failed to get radio input on device '%s'. "
-msgstr "Nisam uspio postaviti ulaz %d na uređaj %s."
+msgstr "Nije uspjelo dobiti radijski ulaz na uređaju ‘%s’. "
#, c-format
msgid "Failed to set input %d on device %s."
-msgstr "Nisam uspio postaviti ulaz %d na uređaj %s."
+msgstr "Nije uspjelo postaviti ulaz %d na uređaj %s."
-#, fuzzy, c-format
+#, c-format
msgid "Failed to change mute state for device '%s'."
-msgstr "Nisam uspio dobiti snagu signala za uređaj „%s”."
+msgstr "Nije uspjelo promijeniti status mute (Zvûk (da/ne) za uređaj ‘%s’."
msgid "Failed to allocated required memory."
-msgstr ""
+msgstr "Nije uspjelo izdvojiti potrebnu memoriju."
msgid "Failed to allocate required memory."
-msgstr ""
+msgstr "Nije uspjelo dodijeliti potrebnu memoriju."
-#, fuzzy, c-format
+#, c-format
msgid "Converter on device %s has no supported input format"
-msgstr "Upravljački program uređaja „%s” ne podržava poznate metode snimanja."
+msgstr "Konverter na uređaju %s nema podržani ulazni format"
-#, fuzzy, c-format
+#, c-format
msgid "Converter on device %s has no supported output format"
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Konverter na uređaju %s nema podržani izlazni format"
-#, fuzzy, c-format
+#, c-format
msgid "Encoder on device %s has no supported input format"
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Koder na uređaju %s nema podržani ulazni format"
-#, fuzzy, c-format
+#, c-format
msgid "Encoder on device %s has no supported output format"
-msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+msgstr "Koder na uređaju %s nema podržani izlazni format"
-#, fuzzy
msgid "Failed to start decoding thread."
-msgstr "Nisam uspio dekodirati JPEG sliku"
+msgstr "Nije uspjelo započeti dekodiranje niti (thread)."
msgid "Failed to process frame."
-msgstr ""
+msgstr "Nije uspjelo obraditi sliku (polusliku)."
#, c-format
msgid ""
"Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
"it is a v4l1 driver."
msgstr ""
-"Greška dobivanja mogućnosti uređaja „%s”: To nije v4l2 upravljački program. "
-"Provjerite je li v4l1 upravljački program."
+"Greška pri dobivanja mogućnosti za uređaj ‘%s’: To nije v4l2 upravljački "
+"program. Provjerite da li je v4l1 upravljački program."
#, c-format
msgid "Failed to query attributes of input %d in device %s"
-msgstr "Nisam uspio ispitati svojstva ulaza %d uređaja %s"
+msgstr "Nije uspjelo ispitati svojstva ulaza %d uređaja %s"
#, c-format
msgid "Failed to get setting of tuner %d on device '%s'."
-msgstr "Nisam uspio dobiti postavke birača %d uređaja „%s”."
+msgstr "Nije uspjelo dobiti postavke tunera %d uređaja ‘%s’."
#, c-format
msgid "Failed to query norm on device '%s'."
-msgstr "Nisam uspio ispitati norm na uređaju „%s”."
+msgstr "Nije uspjelo ispitati normu (standard) na uređaju ‘%s’."
#, c-format
msgid "Failed getting controls attributes on device '%s'."
-msgstr "Nisam uspio dobiti svojstva upravljanja na uređaju „%s”."
+msgstr "Nije uspjelo dobiti upravljačka svojstva uređaja ‘%s’."
#, c-format
msgid "Cannot identify device '%s'."
-msgstr "Ne mogu identificirati uređaj „%s”."
+msgstr "Ne može se identificirati uređaj ‘%s’."
#, c-format
msgid "This isn't a device '%s'."
-msgstr "Ovo nije uređaj „%s”."
+msgstr "Ovo nije uređaj ‘%s’."
#, c-format
msgid "Could not open device '%s' for reading and writing."
-msgstr "Ne mogu otvoriti uređaj „%s” za čitanje i pisanje."
+msgstr "Uređaj ‘%s’nije moguće otvoriti za čitanje i pisanje."
#, c-format
msgid "Device '%s' is not a capture device."
-msgstr "Uređaj „%s” nije uređaj za snimanje."
+msgstr "Uređaj ‘%s’ nije uređaj za snimanje."
#, c-format
msgid "Device '%s' is not a output device."
-msgstr "Uređaj „%s” nije izlazni uređaj."
+msgstr "Uređaj ‘%s’ nije izlazni uređaj."
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' is not a M2M device."
-msgstr "Uređaj „%s” nije izlazni uređaj."
+msgstr "Uređaj ‘%s’ nije M2M uređaj."
-#, fuzzy, c-format
+#, c-format
msgid "Could not dup device '%s' for reading and writing."
-msgstr "Ne mogu otvoriti uređaj „%s” za čitanje i pisanje."
+msgstr "Uređaj ‘%s’nije moguće duplicirati za čitanje i pisanje."
#, c-format
msgid "Failed to set norm for device '%s'."
-msgstr "Nisam uspio postaviti norm za uređaj „%s”."
+msgstr "Nije uspjelo postaviti normu (standard) za uređaj ‘%s’."
#, c-format
msgid "Failed to get current tuner frequency for device '%s'."
-msgstr "Nisam uspio dobiti trenutnu frekvenciju birača za uređaj „%s”."
+msgstr "Nije uspjelo dobiti trenutačnu frekvenciju tunera za uređaj ‘%s’."
#, c-format
msgid "Failed to set current tuner frequency for device '%s' to %lu Hz."
msgstr ""
-"Nisam uspio postaviti trenutnu frekvenciju birača za uređaj „%s” na %lu Hz."
+"Nije uspjelo postaviti trenutačnu frekvenciju tunera za uređaj ‘%s’ na %lu "
+"Hz."
#, c-format
msgid "Failed to get signal strength for device '%s'."
-msgstr "Nisam uspio dobiti snagu signala za uređaj „%s”."
+msgstr "Nije uspjelo dobiti snagu signala za uređaj ‘%s’."
#, c-format
msgid "Failed to get value for control %d on device '%s'."
-msgstr "Nisam uspio dobiti vrijednost za kontrolu %d na uređaju „%s”."
+msgstr "Nije uspjelo dobiti vrijednost za kontrolu %d na uređaju ‘%s’."
#, c-format
msgid "Failed to set value %d for control %d on device '%s'."
-msgstr "Nisam uspio postaviti vrijednost %d za kontrolu %d na uređaju „%s”."
+msgstr "Nije uspjelo postaviti vrijednost %d za kontrolu %d na uređaju ‘%s’."
#, c-format
msgid "Failed to get current input on device '%s'. May be it is a radio device"
msgstr ""
-"Nisam uspio dobiti trenutni ulaz na uređaju „%s”. Možda je to radio uređaj"
+"Nije uspjelo dobiti trenutačni ulaz na uređaju ‘%s’. Možda je to radiouređaj"
#, c-format
msgid ""
"Failed to get current output on device '%s'. May be it is a radio device"
msgstr ""
-"Nisam uspio dobiti trenutni izlaz na uređaju „%s”. Možda je to radio uređaj"
+"Nije uspjelo dobiti trenutačni izlaz na uređaju ‘%s’. Možda je to radiouređaj"
#, c-format
msgid "Failed to set output %d on device %s."
-msgstr "Nisam uspio postaviti izlaz %d na uređaj %s."
+msgstr "Nije uspjelo postaviti izlaz %d na uređaj %s."
msgid "Changing resolution at runtime is not yet supported."
-msgstr "Promjena rezolucije pri izvođenju još nije podržana."
+msgstr "Promjena rezolucije u tijeku rada (runtime) još nije podržana."
msgid "Cannot operate without a clock"
-msgstr "Ne mogu raditi bez takta"
-
-#, fuzzy
-#~ msgid "Device '%s' does not support video capture"
-#~ msgstr "Uređaj „%s” nije izlazni uređaj."
+msgstr "Ne mogu raditi bez takta (sata)"
#~ msgid "Could not establish connection to sound server"
#~ msgstr "Ne mogu ostvariti vezu prema poslužitelju zvuka"
diff --git a/po/hu.gmo b/po/hu.gmo
index 6b5b789..fe2b2a5 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 8fb6b42..f65a266 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-03-14 18:35+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index be8616d..be500c3 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index a5e280a..64d3567 100644
--- a/po/id.po
+++ b/po/id.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.3.90\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2014-07-06 21:37+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 c12c186..3a4c85c 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 54d48b8..ef9eb96 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.25.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2010-10-25 10:11+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 8945a88..12080e7 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 05f3441..4708f17 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.0.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2012-12-22 20:13+0900\n"
"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index f315fb2..c47136a 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index cfe7cb2..e663b82 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.23.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2010-07-16 19:34+0300\n"
"Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index b911c41..0319a51 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index aba0f63..84ac15e 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.2.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2014-04-20 16:38+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 83433e1..97e79fd 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 25abcd2..d14f2c1 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-0.10.10.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2008-10-26 19:09+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 01dfb2c..62faead 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 8d29835..bb5a167 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.6.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2015-12-22 21:12+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 103da20..53473fc 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index a136f39..bf47425 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-20 16:40+0100\n"
"Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index 608f73d..3552c8b 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 3cb97bd..1e07b3a 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-0.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2004-09-27 13:32+0530\n"
"Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
"Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 7ef5d58..676e0aa 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 20ca6da..bdcbb4e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-20 21:43+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 2a1cf7c..a1b21df 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 628ef46..9c8e73f 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,7 +1,7 @@
# Brazilian Portuguese translation of gst-plugins-good.
# This file is distributed under the same license as the gst-plugins-good package.
-# Copyright (C) 2008-2015 Free Software Foundation, Inc.
-# Fabrício Godoy <skarllot@gmail.com>, 2008-2015.
+# Copyright (C) 2008-2016 Free Software Foundation, Inc.
+# Fabrício Godoy <skarllot@gmail.com>, 2008-2016.
#
# data flow -> fluxo de dados
# streaming -> fluxo contínuo
@@ -11,10 +11,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good-1.7.1\n"
+"Project-Id-Version: gst-plugins-good-1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
-"PO-Revision-Date: 2015-12-28 19:47-0200\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
+"PO-Revision-Date: 2016-05-06 17:49-0300\n"
"Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
"net>\n"
@@ -160,10 +160,10 @@
msgstr "Não foi possível abrir o dispositivo de áudio para gravação."
msgid "CoreAudio device not found"
-msgstr ""
+msgstr "Dispositivo CoreAudio não encontrado"
msgid "CoreAudio device could not be opened"
-msgstr ""
+msgstr "Dispositivo CoreAudio não pôde ser aberto"
msgid "Record Source"
msgstr "Origem de gravação"
diff --git a/po/ro.gmo b/po/ro.gmo
index eb2194d..5843436 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index bf2e172..cfab19d 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 0.10.23.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2010-08-16 03:22+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 ece9712..faf284d 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 98204a2..01e0528 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-21 09:55+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index a2d2650..cec9cc4 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 891c590..7b8b170 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,22 +1,21 @@
# Slovak translations for gst-plugins-good.
# This file is put in the public domain.
#
-# Peter Tuhársky <tuharsky@misbb.sk>, 2007, 2008, 2009, 2010, 2014.
+# Peter Tuhársky <tuharsky@misbb.sk>, 2007, 2008, 2009, 2010, 2014, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good 1.2.1\n"
+"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
-"PO-Revision-Date: 2014-01-30 11:08+0100\n"
-"Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
+"PO-Revision-Date: 2016-05-20 12:31+0100\n"
+"Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\n"
-"X-Generator: KBabel 1.11.4\n"
-"X-Poedit-Country: SLOVAKIA\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n;\n"
+"X-Generator: Poedit 1.6.10\n"
msgid "Jack server not found"
msgstr "Jack server sa nenašiel"
@@ -47,7 +46,6 @@
msgid "Secure connection setup failed."
msgstr "Nastavenie bezpečného pripojenia zlyhalo."
-#, fuzzy
msgid ""
"A network error occurred, or the server closed the connection unexpectedly."
msgstr "Vyskytla sa sieťová chyba, alebo server nečakane uzavrel spojenie."
@@ -246,9 +244,9 @@
msgid "Device '%s' cannot capture in the specified format"
msgstr "Zariadenie '%s' nedokáže nahrávať v uvedenom formáte"
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' does support non-contiguous planes"
-msgstr "Zariadenie '%s' nie je určené pre nahrávanie videa"
+msgstr "Zariadenie '%s' podporuje nespojité roviny"
#, c-format
msgid "Could not get parameters on device '%s'"
@@ -257,27 +255,23 @@
msgid "Video device did not accept new frame rate setting."
msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
-#, fuzzy
msgid "Video device did not provide output format."
-msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+msgstr "ideo zariadenie neposkytlo výstupný formát."
msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Video zariadenie udáva nesprávne rozmery."
-#, fuzzy
msgid "Video devices uses an unsupported interlacing method."
-msgstr "Tento ovládač zariadenia '%s' nepodporuje IO metódu %d"
+msgstr "Video zariadenie používa nepodporovanú metódu prekladania snímok."
msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Video zariadenie používa nepodporovaný formát pixelov."
-#, fuzzy
msgid "Failed to configure internal buffer pool."
-msgstr "Video zariadenie nemohlo vytvoriť oblasť vyrovnávacej pamäte."
+msgstr "Nepodarilo sa nastaviť vnútornú oblasť vyrovnávacej pamäte."
-#, fuzzy
msgid "Video device did not suggest any buffer size."
-msgstr "Video zariadenie nemohlo vytvoriť oblasť vyrovnávacej pamäte."
+msgstr "Video zariadenie neodporučilo žiadnu veľkosť vyrovnávacej pamäte."
msgid "No downstream pool to import from."
msgstr ""
@@ -307,33 +301,32 @@
msgstr "Nepodarilo sa zmeniť stav stlmenia pre zariadenie '%s'."
msgid "Failed to allocated required memory."
-msgstr ""
+msgstr "Nepodarilo sa uvoľniť dostatok pamäte."
msgid "Failed to allocate required memory."
-msgstr ""
+msgstr "Nepodarilo sa uvoľniť dostatok pamäte."
-#, fuzzy, c-format
+#, c-format
msgid "Converter on device %s has no supported input format"
-msgstr "Tento ovládač zariadenia '%s' nepodporuje IO metódu %d"
+msgstr "Konvertor na zariadení %s nepodporuje žiadny vstupný formát"
-#, fuzzy, c-format
+#, c-format
msgid "Converter on device %s has no supported output format"
-msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+msgstr "Konvertor na zariadení %s nepodporuje žiadny výstupný formát"
-#, fuzzy, c-format
+#, c-format
msgid "Encoder on device %s has no supported input format"
-msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+msgstr "Enkodér na zariadení %s nepodporuje žiadny vstupný formát"
-#, fuzzy, c-format
+#, c-format
msgid "Encoder on device %s has no supported output format"
-msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+msgstr "Enkodér na zariadení %s nepodporuje žiadny výstupný formát"
-#, fuzzy
msgid "Failed to start decoding thread."
-msgstr "Nepodarilo sa dekódovať obrázok JPEG"
+msgstr "Nepodarilo sa spustiť dekódovacie vlákno."
msgid "Failed to process frame."
-msgstr ""
+msgstr "Nepodarilo sa spracovať snímok."
#, c-format
msgid ""
@@ -379,11 +372,11 @@
msgid "Device '%s' is not a output device."
msgstr "Zariadenie '%s' nie je určené pre výstup."
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' is not a M2M device."
-msgstr "Zariadenie '%s' nie je určené pre výstup."
+msgstr "Zariadenie '%s' nie je typu M2M."
-#, fuzzy, c-format
+#, c-format
msgid "Could not dup device '%s' for reading and writing."
msgstr "Nepodarilo sa otvoriť zariadenie '%s' pre čítanie a zápis."
@@ -436,9 +429,6 @@
msgid "Cannot operate without a clock"
msgstr "Nemôžem fungovať bez hodín"
-#~ msgid "Device '%s' does not support video capture"
-#~ msgstr "Zariadenie '%s' nie je určené pre nahrávanie videa"
-
#~ msgid "Could not establish connection to sound server"
#~ msgstr "Nepodarilo sa nadviazať spojenie so zvukovým serverom"
diff --git a/po/sl.gmo b/po/sl.gmo
index b00b499..c7318e2 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 15c1605..ec2020c 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-1.2.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2014-04-09 22:52+0100\n"
"Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index a5c2839..d90b491 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 20148b0..713e727 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins 0.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2004-08-07 20:29+0200\n"
"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
"Language-Team: Albanian <begraj@hotmail.com>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index d4e34d7..ebd731f 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 5f6176c..bc51935 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-03-05 09:52+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 1a3e925..0786f85 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index dc63056..10cc946 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-20 16:13+0100\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 385db77..9ae083b 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 8cb7bf8..f342199 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.4.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2015-01-10 21:07+0100\n"
"Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 0dc6b1d..173490d 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index cf80cb6..04e9c32 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-20 17:27+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 3827676..9963d93 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 40b088b..876761d 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-21 07:25+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 b4324b3..36ab4da 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 0d7284e..b3e818b 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good 1.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2016-02-21 16:52+0800\n"
"Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo
index 4bdbde7..c5bfe5d 100644
--- a/po/zh_HK.gmo
+++ b/po/zh_HK.gmo
Binary files differ
diff --git a/po/zh_HK.po b/po/zh_HK.po
index a8be355..243c2a5 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2006-08-29 01:08+0800\n"
"Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index a0344fb..c382a13 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 0738aea..bcd0dc0 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-04-20 15:30+0300\n"
+"POT-Creation-Date: 2016-06-09 11:20+0300\n"
"PO-Revision-Date: 2006-08-29 01:08+0800\n"
"Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
index c9648e2..3184bd8 100644
--- a/sys/v4l2/gstv4l2bufferpool.c
+++ b/sys/v4l2/gstv4l2bufferpool.c
@@ -1725,14 +1725,23 @@
if ((*buf)->pool == bpool) {
guint num_queued;
+ gsize size = gst_buffer_get_size (*buf);
- if (gst_buffer_get_size (*buf) == 0) {
+ if (size == 0) {
if (GST_BUFFER_FLAG_IS_SET (*buf, GST_BUFFER_FLAG_CORRUPTED))
goto buffer_corrupted;
else
goto eos;
}
+ /* verify that buffer contains a full frame for raw video */
+ if (GST_VIDEO_INFO_FORMAT (&obj->info) != GST_VIDEO_FORMAT_ENCODED
+ && size < GST_VIDEO_INFO_SIZE (&obj->info)) {
+ GST_WARNING_OBJECT (pool, "Invalid buffer size, this is likely "
+ "due to a bug in your driver, dropping");
+ goto buffer_corrupted;
+ }
+
num_queued = g_atomic_int_get (&pool->num_queued);
GST_TRACE_OBJECT (pool, "Only %i buffer left in the capture queue.",
num_queued);
diff --git a/sys/v4l2/gstv4l2deviceprovider.c b/sys/v4l2/gstv4l2deviceprovider.c
index e606f84..d521838 100644
--- a/sys/v4l2/gstv4l2deviceprovider.c
+++ b/sys/v4l2/gstv4l2deviceprovider.c
@@ -100,7 +100,7 @@
gst_v4l2_device_provider_probe_device (GstV4l2DeviceProvider * provider,
const gchar * device_path, const gchar * device_name, GstStructure * props)
{
- GstV4l2Object *v4l2obj;
+ GstV4l2Object *v4l2obj = NULL;
GstCaps *caps;
GstV4l2Device *device = NULL;
struct stat st;
@@ -109,10 +109,10 @@
g_return_val_if_fail (props != NULL, NULL);
if (stat (device_path, &st) == -1)
- return NULL;
+ goto destroy;
if (!S_ISCHR (st.st_mode))
- return NULL;
+ goto destroy;
v4l2obj = gst_v4l2_object_new ((GstElement *) provider,
V4L2_BUF_TYPE_VIDEO_CAPTURE, device_path, NULL, NULL, NULL);
@@ -172,7 +172,8 @@
destroy:
- gst_v4l2_object_destroy (v4l2obj);
+ if (v4l2obj)
+ gst_v4l2_object_destroy (v4l2obj);
if (props)
gst_structure_free (props);
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index 21c16fa..549e06f 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -1661,6 +1661,7 @@
break;
case GST_VIDEO_FORMAT_RGB15:
fourcc = V4L2_PIX_FMT_RGB555;
+ fourcc_nc = V4L2_PIX_FMT_XRGB555;
break;
case GST_VIDEO_FORMAT_RGB16:
fourcc = V4L2_PIX_FMT_RGB565;
@@ -3024,7 +3025,7 @@
static gboolean
gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps,
- gboolean try_only)
+ gboolean try_only, GstV4l2Error * error)
{
gint fd = v4l2object->video_fd;
struct v4l2_format format;
@@ -3432,7 +3433,7 @@
try_fmt_failed:
{
if (errno == EBUSY) {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, BUSY,
+ GST_V4L2_ERROR (error, RESOURCE, BUSY,
(_("Device '%s' is busy"), v4l2object->videodev),
("Call to TRY_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
GST_FOURCC_ARGS (pixelformat), width, height,
@@ -3443,13 +3444,13 @@
set_fmt_failed:
{
if (errno == EBUSY) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, BUSY,
+ GST_V4L2_ERROR (error, RESOURCE, BUSY,
(_("Device '%s' is busy"), v4l2object->videodev),
("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
GST_FOURCC_ARGS (pixelformat), width, height,
g_strerror (errno)));
} else {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Device '%s' cannot capture at %dx%d"),
v4l2object->videodev, width, height),
("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
@@ -3461,7 +3462,7 @@
invalid_dimensions:
{
if (!try_only) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Device '%s' cannot capture at %dx%d"),
v4l2object->videodev, width, height),
("Tried to capture at %dx%d, but device returned size %dx%d",
@@ -3472,7 +3473,7 @@
invalid_pixelformat:
{
if (!try_only) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Device '%s' cannot capture in the specified format"),
v4l2object->videodev),
("Tried to capture in %" GST_FOURCC_FORMAT
@@ -3485,7 +3486,7 @@
invalid_planes:
{
if (!try_only) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Device '%s' does support non-contiguous planes"),
v4l2object->videodev),
("Device wants %d planes", format.fmt.pix_mp.num_planes));
@@ -3496,7 +3497,7 @@
{
/* it's possible that this call is not supported */
if (errno != EINVAL && errno != ENOTTY) {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Could not get parameters on device '%s'"),
v4l2object->videodev), GST_ERROR_SYSTEM);
}
@@ -3504,7 +3505,7 @@
}
set_parm_failed:
{
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
+ GST_V4L2_ERROR (error, RESOURCE, SETTINGS,
(_("Video device did not accept new frame rate setting.")),
GST_ERROR_SYSTEM);
goto done;
@@ -3517,15 +3518,17 @@
}
gboolean
-gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps)
+gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps,
+ GstV4l2Error * error)
{
- return gst_v4l2_object_set_format_full (v4l2object, caps, FALSE);
+ return gst_v4l2_object_set_format_full (v4l2object, caps, FALSE, error);
}
gboolean
-gst_v4l2_object_try_format (GstV4l2Object * v4l2object, GstCaps * caps)
+gst_v4l2_object_try_format (GstV4l2Object * v4l2object, GstCaps * caps,
+ GstV4l2Error * error)
{
- return gst_v4l2_object_set_format_full (v4l2object, caps, TRUE);
+ return gst_v4l2_object_set_format_full (v4l2object, caps, TRUE, error);
}
/**
@@ -3780,9 +3783,11 @@
}
if (filter) {
+ GstCaps *tmp;
+
+ tmp = ret;
ret = gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
- } else {
- ret = gst_caps_ref (ret);
+ gst_caps_unref (tmp);
}
return ret;
diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h
index e3728c4..7117d43 100644
--- a/sys/v4l2/gstv4l2object.h
+++ b/sys/v4l2/gstv4l2object.h
@@ -25,6 +25,7 @@
#define __GST_V4L2_OBJECT_H__
#include "ext/videodev2.h"
+#include "v4l2-utils.h"
#include <gst/gst.h>
#include <gst/base/gstpushsrc.h>
@@ -250,8 +251,8 @@
gint gst_v4l2_object_extrapolate_stride (const GstVideoFormatInfo * finfo,
gint plane, gint stride);
-gboolean gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps);
-gboolean gst_v4l2_object_try_format (GstV4l2Object * v4l2object, GstCaps * caps);
+gboolean gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps, GstV4l2Error *error);
+gboolean gst_v4l2_object_try_format (GstV4l2Object * v4l2object, GstCaps * caps, GstV4l2Error *error);
gboolean gst_v4l2_object_caps_equal (GstV4l2Object * v4l2object, GstCaps * caps);
diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c
index 5ea374b..ae4a3c2 100644
--- a/sys/v4l2/gstv4l2sink.c
+++ b/sys/v4l2/gstv4l2sink.c
@@ -250,7 +250,10 @@
struct v4l2_format format;
memset (&format, 0x00, sizeof (struct v4l2_format));
- format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+ if ( v4l2sink->v4l2object->vcap.capabilities & V4L2_CAP_VIDEO_OUTPUT_OVERLAY )
+ format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
+ else
+ format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
if (v4l2_ioctl (fd, VIDIOC_G_FMT, &format) < 0) {
GST_WARNING_OBJECT (v4l2sink, "VIDIOC_G_FMT failed");
@@ -490,6 +493,7 @@
static gboolean
gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
{
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
GstV4l2Object *obj = v4l2sink->v4l2object;
@@ -507,7 +511,7 @@
if (!gst_v4l2_object_stop (obj))
goto stop_failed;
- if (!gst_v4l2_object_set_format (obj, caps))
+ if (!gst_v4l2_object_set_format (obj, caps, &error))
goto invalid_format;
gst_v4l2sink_sync_overlay_fields (v4l2sink);
@@ -535,6 +539,7 @@
invalid_format:
{
/* error already posted */
+ gst_v4l2_error (v4l2sink, &error);
GST_DEBUG_OBJECT (v4l2sink, "can't set format");
return FALSE;
}
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
index 235eda4..a6d34b1 100644
--- a/sys/v4l2/gstv4l2src.c
+++ b/sys/v4l2/gstv4l2src.c
@@ -425,6 +425,7 @@
static gboolean
gst_v4l2src_set_format (GstV4l2Src * v4l2src, GstCaps * caps)
{
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
GstV4l2Object *obj;
obj = v4l2src->v4l2object;
@@ -432,9 +433,10 @@
g_signal_emit (v4l2src, gst_v4l2_signals[SIGNAL_PRE_SET_FORMAT], 0,
v4l2src->v4l2object->video_fd, caps);
- if (!gst_v4l2_object_set_format (obj, caps))
- /* error already posted */
+ if (!gst_v4l2_object_set_format (obj, caps, &error)) {
+ gst_v4l2_error (v4l2src, &error);
return FALSE;
+ }
return TRUE;
}
@@ -453,17 +455,20 @@
return TRUE;
if (GST_V4L2_IS_ACTIVE (obj)) {
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
/* Just check if the format is acceptable, once we know
* no buffers should be outstanding we try S_FMT.
*
* Basesrc will do an allocation query that
* should indirectly reclaim buffers, after that we can
* set the format and then configure our pool */
- if (gst_v4l2_object_try_format (obj, caps)) {
+ if (gst_v4l2_object_try_format (obj, caps, &error)) {
v4l2src->renegotiation_adjust = v4l2src->offset + 1;
v4l2src->pending_set_fmt = TRUE;
- } else
+ } else {
+ gst_v4l2_error (v4l2src, &error);
return FALSE;
+ }
} else {
/* make sure we stop capturing and dealloc buffers */
if (!gst_v4l2_object_stop (obj))
@@ -489,6 +494,34 @@
ret = gst_v4l2src_set_format (src, caps);
gst_caps_unref (caps);
src->pending_set_fmt = FALSE;
+ } else if (gst_buffer_pool_is_active (src->v4l2object->pool)) {
+ /* Trick basesrc into not deactivating the active pool. Renegotiating here
+ * would otherwise turn off and on the camera. */
+ GstAllocator *allocator;
+ GstAllocationParams params;
+ GstBufferPool *pool;
+
+ gst_base_src_get_allocator (bsrc, &allocator, ¶ms);
+ pool = gst_base_src_get_buffer_pool (bsrc);
+
+ if (gst_query_get_n_allocation_params (query))
+ gst_query_set_nth_allocation_param (query, 0, allocator, ¶ms);
+ else
+ gst_query_add_allocation_param (query, allocator, ¶ms);
+
+ if (gst_query_get_n_allocation_pools (query))
+ gst_query_set_nth_allocation_pool (query, 0, pool,
+ src->v4l2object->info.size, 1, 0);
+ else
+ gst_query_add_allocation_pool (query, pool, src->v4l2object->info.size, 1,
+ 0);
+
+ if (pool)
+ gst_object_unref (pool);
+ if (allocator)
+ gst_object_unref (allocator);
+
+ return GST_BASE_SRC_CLASS (parent_class)->decide_allocation (bsrc, query);
}
if (ret) {
diff --git a/sys/v4l2/gstv4l2transform.c b/sys/v4l2/gstv4l2transform.c
index 342d998..3090ff6 100644
--- a/sys/v4l2/gstv4l2transform.c
+++ b/sys/v4l2/gstv4l2transform.c
@@ -195,6 +195,7 @@
gst_v4l2_transform_set_caps (GstBaseTransform * trans, GstCaps * incaps,
GstCaps * outcaps)
{
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
GstV4l2Transform *self = GST_V4L2_TRANSFORM (trans);
if (self->incaps && self->outcaps) {
@@ -212,10 +213,10 @@
gst_caps_replace (&self->incaps, incaps);
gst_caps_replace (&self->outcaps, outcaps);
- if (!gst_v4l2_object_set_format (self->v4l2output, incaps))
+ if (!gst_v4l2_object_set_format (self->v4l2output, incaps, &error))
goto incaps_failed;
- if (!gst_v4l2_object_set_format (self->v4l2capture, outcaps))
+ if (!gst_v4l2_object_set_format (self->v4l2capture, outcaps, &error))
goto outcaps_failed;
/* FIXME implement fallback if crop not supported */
@@ -231,6 +232,7 @@
{
GST_ERROR_OBJECT (self, "failed to set input caps: %" GST_PTR_FORMAT,
incaps);
+ gst_v4l2_error (self, &error);
goto failed;
}
outcaps_failed:
@@ -238,6 +240,7 @@
gst_v4l2_object_stop (self->v4l2output);
GST_ERROR_OBJECT (self, "failed to set output caps: %" GST_PTR_FORMAT,
outcaps);
+ gst_v4l2_error (self, &error);
goto failed;
}
failed:
@@ -375,7 +378,7 @@
&& gst_caps_features_is_equal (f,
GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY))
gst_structure_remove_fields (st, "format", "colorimetry", "chroma-site",
- "width", "height", NULL);
+ "width", "height", "pixel-aspect-ratio", NULL);
gst_caps_append_structure_full (res, st, gst_caps_features_copy (f));
}
@@ -428,6 +431,17 @@
ins = gst_caps_get_structure (caps, 0);
outs = gst_caps_get_structure (othercaps, 0);
+ {
+ const gchar *in_format;
+
+ in_format = gst_structure_get_string (ins, "format");
+ if (in_format) {
+ /* Try to set output format for pass through */
+ gst_structure_fixate_field_string (outs, "format", in_format);
+ }
+
+ }
+
from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
@@ -687,9 +701,11 @@
to_par_n = gst_value_get_fraction_numerator (to_par);
to_par_d = gst_value_get_fraction_denominator (to_par);
+ GST_DEBUG_OBJECT (trans, "PAR is fixed %d/%d", to_par_n, to_par_d);
+
/* Calculate scale factor for the PAR change */
- if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_n,
- to_par_d, &num, &den)) {
+ if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_d,
+ to_par_n, &num, &den)) {
GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL),
("Error calculating the output scaled size - integer overflow"));
goto done;
@@ -845,6 +861,9 @@
if (to_par == &tpar)
g_value_unset (&tpar);
+ /* fixate remaining fields */
+ othercaps = gst_caps_fixate (othercaps);
+
return othercaps;
}
diff --git a/sys/v4l2/gstv4l2videodec.c b/sys/v4l2/gstv4l2videodec.c
index a1f0573..8ca5e38 100644
--- a/sys/v4l2/gstv4l2videodec.c
+++ b/sys/v4l2/gstv4l2videodec.c
@@ -229,6 +229,7 @@
gst_v4l2_video_dec_set_format (GstVideoDecoder * decoder,
GstVideoCodecState * state)
{
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
gboolean ret = TRUE;
GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (decoder);
@@ -245,10 +246,12 @@
/* FIXME we probably need to do more work if pools are active */
}
- ret = gst_v4l2_object_set_format (self->v4l2output, state->caps);
+ ret = gst_v4l2_object_set_format (self->v4l2output, state->caps, &error);
if (ret)
self->input_state = gst_video_codec_state_ref (state);
+ else
+ gst_v4l2_error (self, &error);
done:
return ret;
@@ -293,6 +296,37 @@
return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder);
}
+static gboolean
+gst_v4l2_decoder_cmd (GstV4l2Object * v4l2object, guint cmd, guint flags)
+{
+ struct v4l2_decoder_cmd dcmd = { 0, };
+
+ GST_DEBUG_OBJECT (v4l2object->element,
+ "sending v4l2 decoder command %u with flags %u", cmd, flags);
+
+ if (!GST_V4L2_IS_OPEN (v4l2object))
+ return FALSE;
+
+ dcmd.cmd = cmd;
+ dcmd.flags = flags;
+ if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_DECODER_CMD, &dcmd) < 0)
+ goto dcmd_failed;
+
+ return TRUE;
+
+dcmd_failed:
+ if (errno == ENOTTY) {
+ GST_INFO_OBJECT (v4l2object->element,
+ "Failed to send decoder command %u with flags %u for '%s'. (%s)",
+ cmd, flags, v4l2object->videodev, g_strerror (errno));
+ } else {
+ GST_ERROR_OBJECT (v4l2object->element,
+ "Failed to send decoder command %u with flags %u for '%s'. (%s)",
+ cmd, flags, v4l2object->videodev, g_strerror (errno));
+ }
+ return FALSE;
+}
+
static GstFlowReturn
gst_v4l2_video_dec_finish (GstVideoDecoder * decoder)
{
@@ -305,15 +339,28 @@
GST_DEBUG_OBJECT (self, "Finishing decoding");
- /* Keep queuing empty buffers until the processing thread has stopped,
- * _pool_process() will return FLUSHING when that happened */
GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
- while (ret == GST_FLOW_OK) {
- buffer = gst_buffer_new ();
- ret =
- gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL (self->
- v4l2output->pool), &buffer);
- gst_buffer_unref (buffer);
+
+ if (gst_v4l2_decoder_cmd (self->v4l2output, V4L2_DEC_CMD_STOP, 0)) {
+ GstTask *task = decoder->srcpad->task;
+
+ /* If the decoder stop command succeeded, just wait until processing is
+ * finished */
+ GST_OBJECT_LOCK (task);
+ while (GST_TASK_STATE (task) == GST_TASK_STARTED)
+ GST_TASK_WAIT (task);
+ GST_OBJECT_UNLOCK (task);
+ ret = GST_FLOW_FLUSHING;
+ } else {
+ /* otherwise keep queuing empty buffers until the processing thread has
+ * stopped, _pool_process() will return FLUSHING when that happened */
+ while (ret == GST_FLOW_OK) {
+ buffer = gst_buffer_new ();
+ ret =
+ gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL (self->
+ v4l2output->pool), &buffer);
+ gst_buffer_unref (buffer);
+ }
}
/* and ensure the processing thread has stopped in case another error
@@ -441,12 +488,42 @@
gst_flow_get_name (self->output_flow));
}
+static gboolean
+gst_v4l2_video_remove_padding(GstCapsFeatures * features,
+ GstStructure * structure, gpointer user_data)
+{
+ GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (user_data);
+ GstVideoAlignment *align = &self->v4l2capture->align;
+ GstVideoInfo *info = &self->v4l2capture->info;
+ int width, height;
+
+ if (!gst_structure_get_int(structure, "width", &width))
+ return TRUE;
+
+ if (!gst_structure_get_int(structure, "height", &height))
+ return TRUE;
+
+ if (align->padding_left != 0 || align->padding_top != 0 ||
+ width != info->width + align->padding_right ||
+ height != info->height + align->padding_bottom)
+ return TRUE;
+
+ gst_structure_set(structure,
+ "width", G_TYPE_INT, width - align->padding_right,
+ "height", G_TYPE_INT, height - align->padding_bottom, NULL);
+
+ return TRUE;
+}
+
static GstFlowReturn
gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
GstVideoCodecFrame * frame)
{
+ GstV4l2Error error = GST_V4L2_ERROR_INIT;
GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (decoder);
GstFlowReturn ret = GST_FLOW_OK;
+ gboolean processed = FALSE;
+ GstBuffer *tmp;
GST_DEBUG_OBJECT (self, "Handling frame %d", frame->system_frame_number);
@@ -456,7 +533,8 @@
if (G_UNLIKELY (!GST_V4L2_IS_ACTIVE (self->v4l2output))) {
if (!self->input_state)
goto not_negotiated;
- if (!gst_v4l2_object_set_format (self->v4l2output, self->input_state->caps))
+ if (!gst_v4l2_object_set_format (self->v4l2output, self->input_state->caps,
+ &error))
goto not_negotiated;
}
@@ -465,7 +543,7 @@
GstVideoInfo info;
GstVideoCodecState *output_state;
GstBuffer *codec_data;
- GstCaps *acquired_caps, *caps, *filter;
+ GstCaps *acquired_caps, *available_caps, *caps, *filter;
GstStructure *st;
GST_DEBUG_OBJECT (self, "Sending header");
@@ -479,8 +557,8 @@
if (codec_data) {
gst_buffer_ref (codec_data);
} else {
- codec_data = frame->input_buffer;
- frame->input_buffer = NULL;
+ codec_data = gst_buffer_ref (frame->input_buffer);
+ processed = TRUE;
}
/* Ensure input internal pool is active */
@@ -505,6 +583,10 @@
gst_buffer_unref (codec_data);
+ /* For decoders G_FMT returns coded size, G_SELECTION returns visible size
+ * in the compose rectangle. gst_v4l2_object_acquire_format() checks both
+ * and returns the visible size as with/height and the coded size as
+ * padding. */
if (!gst_v4l2_object_acquire_format (self->v4l2capture, &info))
goto not_negotiated;
@@ -514,8 +596,17 @@
gst_structure_remove_field (st, "format");
/* Probe currently available pixel formats */
- filter = gst_v4l2_object_probe_caps (self->v4l2capture, acquired_caps);
+ available_caps = gst_v4l2_object_probe_caps (self->v4l2capture, NULL);
+ available_caps = gst_caps_make_writable (available_caps);
+
+ /* Replace coded size with visible size, we want to negotiate visible size
+ * with downstream, not coded size. */
+ gst_caps_map_in_place (available_caps, gst_v4l2_video_remove_padding, self);
+
+ filter = gst_caps_intersect_full (available_caps, acquired_caps,
+ GST_CAPS_INTERSECT_FIRST);
gst_caps_unref (acquired_caps);
+ gst_caps_unref (available_caps);
caps = gst_pad_peer_query_caps (decoder->srcpad, filter);
gst_caps_unref (filter);
@@ -531,8 +622,10 @@
GST_DEBUG_OBJECT (self, "Chosen decoded caps: %" GST_PTR_FORMAT, caps);
/* Try to set negotiated format, on success replace acquired format */
- if (gst_v4l2_object_set_format (self->v4l2capture, caps))
+ if (gst_v4l2_object_set_format (self->v4l2capture, caps, &error))
gst_video_info_from_caps (&info, caps);
+ else
+ gst_v4l2_clear_error (&error);
gst_caps_unref (caps);
output_state = gst_video_decoder_set_output_state (decoder,
@@ -575,7 +668,7 @@
goto start_task_failed;
}
- if (frame->input_buffer) {
+ if (!processed) {
GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
ret =
gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL (self->v4l2output->
@@ -589,11 +682,16 @@
} else if (ret != GST_FLOW_OK) {
goto process_failed;
}
-
- /* No need to keep input arround */
- gst_buffer_replace (&frame->input_buffer, NULL);
}
+ /* No need to keep input arround */
+ tmp = frame->input_buffer;
+ frame->input_buffer = gst_buffer_new ();
+ gst_buffer_copy_into (frame->input_buffer, tmp,
+ GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS |
+ GST_BUFFER_COPY_META, 0, 0);
+ gst_buffer_unref (tmp);
+
gst_video_codec_frame_unref (frame);
return ret;
@@ -602,6 +700,7 @@
{
GST_ERROR_OBJECT (self, "not negotiated");
ret = GST_FLOW_NOT_NEGOTIATED;
+ gst_v4l2_error (self, &error);
goto drop;
}
activate_failed:
diff --git a/sys/v4l2/v4l2-utils.c b/sys/v4l2/v4l2-utils.c
index 899c191..ce364a0 100644
--- a/sys/v4l2/v4l2-utils.c
+++ b/sys/v4l2/v4l2-utils.c
@@ -164,3 +164,38 @@
}
#endif
+
+void
+gst_v4l2_clear_error (GstV4l2Error * v4l2err)
+{
+ if (v4l2err) {
+ g_clear_error (&v4l2err->error);
+ g_free (v4l2err->dbg_message);
+ }
+}
+
+void
+gst_v4l2_error (gpointer element, GstV4l2Error * v4l2err)
+{
+ GError *error;
+
+ if (!v4l2err || !v4l2err->error)
+ return;
+
+ error = v4l2err->error;
+
+ if (error->message)
+ GST_WARNING_OBJECT (element, "error: %s", error->message);
+
+ if (v4l2err->dbg_message)
+ GST_WARNING_OBJECT (element, "error: %s", v4l2err->dbg_message);
+
+ gst_element_message_full (GST_ELEMENT (element), GST_MESSAGE_ERROR,
+ error->domain, error->code, error->message, v4l2err->dbg_message,
+ v4l2err->file, v4l2err->func, v4l2err->line);
+
+ error->message = NULL;
+ v4l2err->dbg_message = NULL;
+
+ gst_v4l2_clear_error (v4l2err);
+}
diff --git a/sys/v4l2/v4l2-utils.h b/sys/v4l2/v4l2-utils.h
index 9a73bd9..1bc0062 100644
--- a/sys/v4l2/v4l2-utils.h
+++ b/sys/v4l2/v4l2-utils.h
@@ -26,7 +26,23 @@
G_BEGIN_DECLS
+#define GST_V4L2_ERROR_INIT { NULL, NULL }
+#define GST_V4L2_ERROR(v4l2err,domain,code,msg,dbg) \
+{\
+ if (v4l2err) { \
+ gchar *_msg = _gst_element_error_printf msg; \
+ v4l2err->error = g_error_new_literal (GST_##domain##_ERROR, \
+ GST_##domain##_ERROR_##code, _msg); \
+ g_free (_msg); \
+ v4l2err->dbg_message = _gst_element_error_printf dbg; \
+ v4l2err->file = __FILE__; \
+ v4l2err->func = GST_FUNCTION; \
+ v4l2err->line = __LINE__; \
+ } \
+}
+
typedef struct _GstV4l2Iterator GstV4l2Iterator;
+typedef struct _GstV4l2Error GstV4l2Error;
struct _GstV4l2Iterator
{
@@ -35,6 +51,15 @@
const gchar *sys_path;
};
+struct _GstV4l2Error
+{
+ GError *error;
+ gchar *dbg_message;
+ const gchar *file;
+ const gchar *func;
+ gint line;
+};
+
GstV4l2Iterator * gst_v4l2_iterator_new (void);
gboolean gst_v4l2_iterator_next (GstV4l2Iterator *it);
void gst_v4l2_iterator_free (GstV4l2Iterator *it);
@@ -43,6 +68,9 @@
const gchar * gst_v4l2_iterator_get_device_name (GstV4l2Iterator *it);
const gchar * gst_v4l2_iterator_get_sys_path (GstV4l2Iterator *it);
+void gst_v4l2_clear_error (GstV4l2Error *error);
+void gst_v4l2_error (gpointer element, GstV4l2Error *error);
+
G_END_DECLS
#endif /* __V4L2_UTILS_H__ */
diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
index 356d42f..bfb6557 100644
--- a/sys/v4l2/v4l2_calls.c
+++ b/sys/v4l2/v4l2_calls.c
@@ -923,9 +923,9 @@
/* ERRORS */
ctrl_failed:
{
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get value for control %d on device '%s'."),
- attribute_num, v4l2object->videodev), GST_ERROR_SYSTEM);
+ GST_WARNING_OBJECT (v4l2object,
+ _("Failed to get value for control %d on device '%s'."),
+ attribute_num, v4l2object->videodev);
return FALSE;
}
}
@@ -958,9 +958,9 @@
/* ERRORS */
ctrl_failed:
{
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set value %d for control %d on device '%s'."),
- value, attribute_num, v4l2object->videodev), GST_ERROR_SYSTEM);
+ GST_WARNING_OBJECT (v4l2object,
+ _("Failed to set value %d for control %d on device '%s'."),
+ value, attribute_num, v4l2object->videodev);
return FALSE;
}
}
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index bc78f9f..3aec98c 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -561,7 +561,7 @@
elements_rtprtx_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD)
elements_rtpsession_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
-elements_rtpsession_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD)
+elements_rtpsession_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstnet-$(GST_API_VERSION) -lgstrtp-$(GST_API_VERSION) $(GIO_LIBS) $(LDADD)
elements_rtpcollision_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
elements_rtpcollision_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstnet-$(GST_API_VERSION) -lgstrtp-$(GST_API_VERSION) $(GIO_LIBS) $(LDADD)
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 12d0f6f..ae6b0de 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -684,7 +684,7 @@
elements_rtpsession_OBJECTS = \
elements/elements_rtpsession-rtpsession.$(OBJEXT)
elements_rtpsession_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_2)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
elements_rtpsession_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_rtpsession_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -1852,7 +1852,7 @@
elements_rtprtx_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
elements_rtprtx_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD)
elements_rtpsession_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
-elements_rtpsession_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD)
+elements_rtpsession_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstnet-$(GST_API_VERSION) -lgstrtp-$(GST_API_VERSION) $(GIO_LIBS) $(LDADD)
elements_rtpcollision_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
elements_rtpcollision_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstnet-$(GST_API_VERSION) -lgstrtp-$(GST_API_VERSION) $(GIO_LIBS) $(LDADD)
elements_rtpaux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
diff --git a/tests/check/elements/rtpjitterbuffer.c b/tests/check/elements/rtpjitterbuffer.c
index 28c04fe..3b519e0 100644
--- a/tests/check/elements/rtpjitterbuffer.c
+++ b/tests/check/elements/rtpjitterbuffer.c
@@ -459,7 +459,7 @@
}
static void
-verify_lost_event (GstEvent * event, guint32 expected_seqnum,
+verify_lost_event (GstEvent * event, guint16 expected_seqnum,
GstClockTime expected_timestamp, GstClockTime expected_duration)
{
const GstStructure *s = gst_event_get_structure (event);
@@ -1407,6 +1407,87 @@
GST_END_TEST;
+typedef struct
+{
+ guint seqnum_offset;
+ guint late_buffer;
+} TestLateArrivalInput;
+
+static const TestLateArrivalInput
+ test_considered_lost_packet_in_large_gap_arrives_input[] = {
+ {0, 1}, {0, 2}, {65535, 1}, {65535, 2}, {65534, 1}, {65534, 2}
+};
+
+GST_START_TEST (test_considered_lost_packet_in_large_gap_arrives)
+{
+ GstHarness *h = gst_harness_new ("rtpjitterbuffer");
+ GstTestClock *testclock;
+ GstClockID id;
+ GstBuffer *buffer;
+ gint jb_latency_ms = 20;
+ GstEvent *event;
+ const TestLateArrivalInput *test_input =
+ &test_considered_lost_packet_in_large_gap_arrives_input[__i__];
+ guint seq_offset = test_input->seqnum_offset;
+ guint late_buffer = test_input->late_buffer;
+
+ gst_harness_set_src_caps (h, generate_caps ());
+ testclock = gst_harness_get_testclock (h);
+ g_object_set (h->element, "do-lost", TRUE, "latency", jb_latency_ms, NULL);
+
+ /* first push buffer 0 */
+ fail_unless_equals_int (GST_FLOW_OK,
+ gst_harness_push (h, generate_test_buffer_full (0 * PCMU_BUF_DURATION,
+ TRUE, 0 + seq_offset, 0 * PCMU_RTP_TS_DURATION)));
+ fail_unless (gst_harness_crank_single_clock_wait (h));
+ gst_buffer_unref (gst_harness_pull (h));
+
+ /* drop GstEventStreamStart & GstEventCaps & GstEventSegment */
+ for (gint i = 0; i < 3; i++)
+ gst_event_unref (gst_harness_pull_event (h));
+
+ /* hop over 3 packets, and push buffer 4 (gap of 3) */
+ fail_unless_equals_int (GST_FLOW_OK,
+ gst_harness_push (h, generate_test_buffer_full (4 * PCMU_BUF_DURATION,
+ TRUE, 4 + seq_offset, 4 * PCMU_RTP_TS_DURATION)));
+
+ /* the jitterbuffer should be waiting for the timeout of a "large gap timer"
+ * for buffer 1 and 2 */
+ gst_test_clock_wait_for_next_pending_id (testclock, &id);
+ fail_unless_equals_uint64 (1 * PCMU_BUF_DURATION +
+ jb_latency_ms * GST_MSECOND, gst_clock_id_get_time (id));
+ gst_clock_id_unref (id);
+
+ /* now buffer 1 sneaks in before the lost event for buffer 1 and 2 is
+ * processed */
+ fail_unless_equals_int (GST_FLOW_OK,
+ gst_harness_push (h,
+ generate_test_buffer_full (late_buffer * PCMU_BUF_DURATION, TRUE,
+ late_buffer + seq_offset, late_buffer * PCMU_RTP_TS_DURATION)));
+
+ /* time out for lost packets 1 and 2 (one event, double duration) */
+ fail_unless (gst_harness_crank_single_clock_wait (h));
+ event = gst_harness_pull_event (h);
+ verify_lost_event (event, 1 + seq_offset, 1 * PCMU_BUF_DURATION,
+ 2 * PCMU_BUF_DURATION);
+
+ /* time out for lost packets 3 */
+ fail_unless (gst_harness_crank_single_clock_wait (h));
+ event = gst_harness_pull_event (h);
+ verify_lost_event (event, 3 + seq_offset, 3 * PCMU_BUF_DURATION,
+ 1 * PCMU_BUF_DURATION);
+
+ /* buffer 4 is pushed as normal */
+ buffer = gst_harness_pull (h);
+ fail_unless_equals_int ((4 + seq_offset) & 0xffff, get_rtp_seq_num (buffer));
+ gst_buffer_unref (buffer);
+
+ gst_object_unref (testclock);
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
static Suite *
rtpjitterbuffer_suite (void)
{
@@ -1431,6 +1512,10 @@
tcase_add_test (tc_chain, test_dts_gap_larger_than_latency);
tcase_add_test (tc_chain, test_push_big_gap);
+ tcase_add_loop_test (tc_chain,
+ test_considered_lost_packet_in_large_gap_arrives, 0,
+ G_N_ELEMENTS (test_considered_lost_packet_in_large_gap_arrives_input));
+
return s;
}
diff --git a/tests/check/elements/rtpsession.c b/tests/check/elements/rtpsession.c
index f7c1bdf..88c2f3d 100644
--- a/tests/check/elements/rtpsession.c
+++ b/tests/check/elements/rtpsession.c
@@ -20,12 +20,15 @@
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
#include <gst/check/gstcheck.h>
#include <gst/check/gsttestclock.h>
+#include <gst/check/gstharness.h>
#include <gst/rtp/gstrtpbuffer.h>
#include <gst/rtp/gstrtcpbuffer.h>
+#include <gst/net/gstnetaddressmeta.h>
static const guint payload_size = 160;
static const guint clock_rate = 8000;
@@ -576,6 +579,109 @@
GST_END_TEST;
+static void
+suspicious_bye_cb (GObject * object, GParamSpec * spec, gpointer data)
+{
+ GValueArray *stats_arr;
+ GstStructure *stats, *internal_stats;
+ gboolean *cb_called = data;
+ gboolean internal = FALSE, sent_bye = TRUE;
+ guint ssrc = 0;
+ guint i;
+
+ g_assert (*cb_called == FALSE);
+ *cb_called = TRUE;
+
+ g_object_get (object, "stats", &stats, NULL);
+ stats_arr =
+ g_value_get_boxed (gst_structure_get_value (stats, "source-stats"));
+ g_assert (stats_arr != NULL);
+ fail_unless (stats_arr->n_values >= 1);
+
+ for (i = 0; i < stats_arr->n_values; i++) {
+ internal_stats = g_value_get_boxed (g_value_array_get_nth (stats_arr, i));
+ g_assert (internal_stats != NULL);
+
+ gst_structure_get (internal_stats,
+ "ssrc", G_TYPE_UINT, &ssrc,
+ "internal", G_TYPE_BOOLEAN, &internal,
+ "received-bye", G_TYPE_BOOLEAN, &sent_bye, NULL);
+
+ if (ssrc == 0xDEADBEEF) {
+ fail_unless (internal);
+ fail_unless (!sent_bye);
+ break;
+ }
+ }
+ fail_unless_equals_int (ssrc, 0xDEADBEEF);
+
+ gst_structure_free (stats);
+}
+
+static GstBuffer *
+create_bye_rtcp (guint32 ssrc)
+{
+ GstRTCPPacket packet;
+ GstRTCPBuffer rtcp = GST_RTCP_BUFFER_INIT;
+ GSocketAddress *saddr;
+ GstBuffer *buffer = gst_rtcp_buffer_new (1000);
+
+ fail_unless (gst_rtcp_buffer_map (buffer, GST_MAP_READWRITE, &rtcp));
+ fail_unless (gst_rtcp_buffer_add_packet (&rtcp, GST_RTCP_TYPE_BYE, &packet));
+ gst_rtcp_packet_bye_add_ssrc (&packet, ssrc);
+ gst_rtcp_buffer_unmap (&rtcp);
+
+ /* Need to add meta to trigger collision detection */
+ saddr = g_inet_socket_address_new_from_string ("127.0.0.1", 3490);
+ gst_buffer_add_net_address_meta (buffer, saddr);
+ g_object_unref (saddr);
+ return buffer;
+}
+
+GST_START_TEST (test_ignore_suspicious_bye)
+{
+ GstHarness *h_rtcp = NULL;
+ GstHarness *h_send = NULL;
+ gboolean cb_called = FALSE;
+ GstTestClock *testclock = GST_TEST_CLOCK (gst_test_clock_new ());
+
+ /* use testclock as the systemclock to capture the rtcp thread waits */
+ gst_system_clock_set_default (GST_CLOCK (testclock));
+
+ h_rtcp =
+ gst_harness_new_with_padnames ("rtpsession", "recv_rtcp_sink",
+ "send_rtcp_src");
+ h_send =
+ gst_harness_new_with_element (h_rtcp->element, "send_rtp_sink",
+ "send_rtp_src");
+
+ /* connect to the stats-reporting */
+ g_signal_connect (h_rtcp->element, "notify::stats",
+ G_CALLBACK (suspicious_bye_cb), &cb_called);
+
+ /* Push RTP buffer making our internal SSRC=0xDEADBEEF */
+ gst_harness_set_src_caps_str (h_send,
+ "application/x-rtp,ssrc=(uint)0xDEADBEEF,"
+ "clock-rate=90000,seqnum-offset=(uint)12345");
+ gst_harness_push (h_send,
+ generate_test_buffer (0, FALSE, 12345, 0, 0xDEADBEEF));
+
+ /* Push BYE RTCP with internal SSRC (0xDEADBEEF) */
+ gst_harness_set_src_caps_str (h_rtcp, "application/x-rtcp");
+ gst_harness_push (h_rtcp, create_bye_rtcp (0xDEADBEEF));
+
+ /* "crank" and check the stats */
+ g_assert (gst_test_clock_crank (testclock));
+ gst_buffer_unref (gst_harness_pull (h_rtcp));
+ fail_unless (cb_called);
+
+ gst_harness_teardown (h_send);
+ gst_harness_teardown (h_rtcp);
+ gst_object_unref (testclock);
+}
+
+GST_END_TEST;
+
static Suite *
rtpsession_suite (void)
{
@@ -586,6 +692,7 @@
tcase_add_test (tc_chain, test_multiple_ssrc_rr);
tcase_add_test (tc_chain, test_multiple_senders_roundrobin_rbs);
tcase_add_test (tc_chain, test_internal_sources_timeout);
+ tcase_add_test (tc_chain, test_ignore_suspicious_bye);
return s;
}
diff --git a/win32/common/config.h b/win32/common/config.h
index 74af961..f05ed03 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -64,7 +64,7 @@
#define GST_PACKAGE_ORIGIN "Unknown package origin"
/* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2016-04-20"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-06-09"
/* Define if static plugins should be built */
#undef GST_PLUGIN_BUILD_STATIC
@@ -395,7 +395,7 @@
#define PACKAGE_NAME "GStreamer Good Plug-ins"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Good Plug-ins 1.8.1"
+#define PACKAGE_STRING "GStreamer Good Plug-ins 1.8.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-good"
@@ -404,7 +404,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.8.1"
+#define PACKAGE_VERSION "1.8.2"
/* directory where plugins are located */
#ifdef _DEBUG
@@ -435,7 +435,7 @@
#undef TARGET_CPU
/* Version number of package */
-#define VERSION "1.8.1"
+#define VERSION "1.8.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */