=== release 1.8.2 === 2016-06-09 Sebastian Dröge * configure.ac: releasing 1.8.2 2016-06-09 10:05:34 +0300 Sebastian Dröge * po/hr.po: * po/pt_BR.po: * po/sk.po: po: Update translations 2016-06-09 09:30:48 +0900 Seungha Yang * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/multifile/gstsplitmuxsink.c: splitmuxsink: Remove stray carriage-return from debug 2015-04-30 14:43:04 +0200 Jesper Larsen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/deinterlace/gstdeinterlace.c: deinterlace: fix description of linear interlacing method 2016-04-21 14:08:19 -0300 Thibault Saunier * 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 * 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 * 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 * 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