=== release 1.10.3 === 2017-01-30 Sebastian Dröge * configure.ac: releasing 1.10.3 2017-01-30 13:33:23 +0200 Sebastian Dröge * po/el.po: po: Update translations 2017-01-27 16:14:16 +0200 Vivia Nikolaidou * gst/isomp4/atoms.c: qtmux: Timecode track fixes for STSD entry The n_frames field (frames per second) should follow the nominal frame rate for drop-frame timecodes. Also, the trak's timescale (and duration, accordingly) should follow the STSD entry's timescale and frame duration (fps_n and fps_d accordingly), not the other way around. https://bugzilla.gnome.org/show_bug.cgi?id=777832 2017-01-19 11:08:11 +0100 Arnaud Vrac * ext/soup/gstsouphttpsrc.c: souphttpsrc: retry request on early termination from the server Fix a regression introduced by commit 183695c61a54f1 (refactor to use Soup's sync API). The code previously attempted to reconnect when the server closed the connection early, for example when the stream was put in pause for some time. Reintroduce this feature by checking if EOS is received before the expected content size is downloaded. In this case, do the request starting at the previous read position. https://bugzilla.gnome.org/show_bug.cgi?id=776720 2017-01-10 09:40:56 -0700 Matt Staples * gst/rtsp/gstrtspsrc.c: rtspsrc: find_stream_by_channel should ignore unconfigured streams https://bugzilla.gnome.org/show_bug.cgi?id=777101 2017-01-25 18:43:00 +0000 Brendan Shanks * gst/isomp4/gstqtmux.c: qtmux: Fix debug typo and remove misleading warning https://bugzilla.gnome.org/show_bug.cgi?id=777362 2017-01-26 13:54:14 +0200 Sebastian Dröge * gst/autodetect/gstautodetect.c: Revert "autodetect: bring the element state down after success" This reverts commit 67f6d3358e4620319335065db25edaaba1f5ae0a. It causes problems in certain scenarios and needs further investigation https://bugzilla.gnome.org/show_bug.cgi?id=764947#c9 2017-01-09 11:32:35 +0530 Rahul Bedarkar * gst/wavparse/gstwavparse.c: wavparse: check for not NULL before clearing adapter In case wavparse receives a manually injected FLUSH_STOP event while operating in pull mode we get criticals because we'd try to clear a NULL adapter. https://bugzilla.gnome.org/show_bug.cgi?id=777123 2017-01-20 17:16:10 +0200 Sebastian Dröge * gst/avi/gstavidemux.c: avidemux: Stop reading a ncdt sub-tag if it goes behind the surrounding tag https://bugzilla.gnome.org/show_bug.cgi?id=777532 2017-01-20 07:58:26 +0200 Sebastian Dröge * gst/avi/gstavidemux.c: avidemux: Fix various out of bounds reads when parsing ncdt tags https://bugzilla.gnome.org/show_bug.cgi?id=777500 2017-01-19 13:46:58 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Increment current stts index whenever we finished one stts entry Otherwise we could read more chunks than there are available, doing an out of bounds read and potentially crash. https://bugzilla.gnome.org/show_bug.cgi?id=777469 2017-01-19 13:25:53 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: Revert "qtdemux: Increment current stts index in all code paths after reading one chunk" This reverts commit 99d5d7570d0b53dad3bc8eb653b1320ee422aace. It broke playback of various valid files. 2017-01-19 07:52:33 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Increment current stts index in all code paths after reading one chunk Otherwise we could read more chunks than there are available, doing an out of bounds read and potentially crash. https://bugzilla.gnome.org/show_bug.cgi?id=777469 2017-01-13 16:40:43 +0100 Arnaud Vrac * ext/soup/gstsouphttpsrc.c: souphttpsrc: properly track redirections The current code configures libsoup to handle redirections transparently, without informing the caller, thus preventing the element to record the redirect code and location uri. Fix this by always setting the SOUP_MESSAGE_NO_REDIRECT, preventing libsoup from handling the redirection. When we receive a redirection request and libsoup can safely handle it, return a custom error which triggers a retry with the new URI. https://bugzilla.gnome.org/show_bug.cgi?id=777222 2017-01-13 00:01:06 +1100 Jan Schmidt * gst/isomp4/gstqtmux.c: qtmux: Don't reset request pad numbering across uses When reset, don't restart request pad numberings, as request pads can survive across state changes. Only restart at 0 if all request pads are handed back first. https://bugzilla.gnome.org/show_bug.cgi?id=777174 2017-01-11 17:53:32 -0800 Andre McCurdy * gst/isomp4/qtdemux.c: qtdemux: free seqh after calling qtdemux_parse_svq3_stsd_data() The seqh buffer allocated in qtdemux_parse_svq3_stsd_data() needs to be freed by the caller after use. https://bugzilla.gnome.org/show_bug.cgi?id=777157 Signed-off-by: Andre McCurdy 2017-01-16 15:17:15 +0100 Jean-Christophe Trotin * sys/v4l2/gstv4l2allocator.c: v4l2allocator: fix memory type in allocator probe The buffer memory type provided to the VIDIOC_CREATE_BUFS ioctl shall be set with the value ("memory") given as input parameter of the gst_v4l2_allocator_probe() function. https://bugzilla.gnome.org/show_bug.cgi?id=777327 2016-11-11 14:31:03 +1100 Matthew Waters * gst/autodetect/gstautodetect.c: autodetect: bring the element state down after success Otherwise some messages that are emitted by the element on NULL->READY will not reach the application. https://bugzilla.gnome.org/show_bug.cgi?id=764947 2016-04-24 21:38:51 +0900 Seungha Yang * gst/isomp4/qtdemux.c: qtdemux: Fix key_time in gst_qtdemux_adjust_seek() time in segment should be PTS based (not DTS). https://bugzilla.gnome.org/show_bug.cgi?id=765498 2017-01-07 23:55:42 +1100 Jan Schmidt * gst/isomp4/qtdemux.c: qtdemux: Don't reset output timestamps when no tfdt If a fragmented stream doesn't have a tfdt, don't reset the output timestamps at each fragment boundary by erroneously using the default value of 0. Introduced by commit 69fc48 https://bugzilla.gnome.org/show_bug.cgi?id=754230 2016-12-14 21:45:15 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Check if we have enough data available when parsing edit lists Also consume the data entry by entry to get complicated indexing out of the code. https://bugzilla.gnome.org/show_bug.cgi?id=776107 2016-12-14 10:15:10 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Check that the XiTh size is big enough https://bugzilla.gnome.org/show_bug.cgi?id=775794 2016-12-09 20:27:53 +0900 Heekyoung Seo * gst/isomp4/qtdemux.c: qtdemux: Check node length of video sample description Add check for node length of video sample description and its fields and for the XiTh atom. Also unify the code a bit. https://bugzilla.gnome.org/show_bug.cgi?id=775794 2016-12-11 13:27:27 +0200 Sebastian Dröge * gst/audiofx/gstscaletempo.c: scaletempo: Ensure to reinit buffers whenever they were not allocated yet That is, whenever we go through start/stop we have to ensure that on the next opportunity the buffers are reallocated again. Otherwise the buffers might be NULL because the element was reused with the same configuration as before (i.e. set_caps() wouldn't have reinited the buffers). https://bugzilla.gnome.org/show_bug.cgi?id=775898 2016-12-09 17:55:39 +0200 Sebastian Dröge * gst/flx/gstflxdec.c: * gst/flx/gstflxdec.h: flxdec: Only send SEGMENT events after CAPS I.e., don't just forward the event but delay it if we don't have caps on the srcpad yet. 2016-12-09 17:49:40 +0200 Sebastian Dröge * gst/flx/gstflxdec.c: flxdec: Unref and unmap buffers in all code paths as needed https://bugzilla.gnome.org/show_bug.cgi?id=775888 2016-12-06 07:48:47 +0200 Sebastian Dröge * gst/flx/gstflxdec.c: flxdec: Allocate 0-initialized memory for the decoded frame Otherwise we might leak arbitrary information from the uninitialized memory if not every pixel is written. https://scarybeastsecurity.blogspot.gr/2016/12/1days-0days-pocs-more-gstreamer-flic.html 2016-12-05 07:57:19 -0700 Matt Staples * gst/rtsp/gstrtspsrc.c: rtspsrc: Fix session cleanup when handling redirect on PLAY Redirect on PLAY wasn't doing the necessary session cleanup. Fixed by removing code from gst_rtspsrc_send that changed the state varable upon encountering a redirect. Better to let the redirect handlers in gst_rtspsrc_retrieve_sdp and gst_rtspsrc_play do their own state-dependent cleanup. https://bugzilla.gnome.org/show_bug.cgi?id=775543 2016-12-01 17:08:09 +0100 Edward Hervey * gst/rtpmanager/gstrtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.c: jitterbuffer: Don't leak duplicate items When providing items with a seqnum, there is a (very small) probability that an element with the same seqnum already exists. Don't forget to free that item if it wasn't inserted. And avoid returning undefined values when dealing with duplicate items 2016-11-03 15:03:59 +0100 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: fix timer-reuse bug When doing rtx, the jitterbuffer will always add an rtx-timer for the next sequence number. In the case of the packet corresponding to that sequence number arriving, that same timer will be reused, and simply moved on to wait for the following sequence number etc. Once an rtx-timer expires (after all retries), it will be rescheduled as a lost-timer instead for the same sequence number. Now, if this particular sequence-number now arrives (after the timer has become a lost-timer), the reuse mechanism *should* now set a new rtx-timer for the next sequence number, but the bug is that it does not change the timer-type, and hence schedules a lost-timer for that following sequence number, with the result that you will have a very early lost-event for a packet that might still arrive, and you will never be able to send any rtx for this packet. Found by Erlend Graff - erlend@pexip.com https://bugzilla.gnome.org/show_bug.cgi?id=773891 2016-10-09 15:59:05 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.h: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: fix lost-event using dts instead of pts The lost-event was using a different time-domain (dts) than the outgoing buffers (pts). Given certain network-conditions these two would become sufficiently different and the lost-event contained timestamp/duration that was really wrong. As an example GstAudioDecoder could produce a stream that jumps back and forth in time after receiving a lost-event. The previous behavior calculated the pts (based on the rtptime) inside the rtp_jitter_buffer_insert function, but now this functionality has been refactored into a new function rtp_jitter_buffer_calculate_pts that is called much earlier in the _chain function to make pts available to various calculations that wrongly used dts previously (like the lost-event). There are however two calculations where using dts is the right thing to do: calculating the receive-jitter and the rtx-round-trip-time, where the arrival time of the buffer from the network is the right metric (and is what dts in fact is today). The patch also adds two tests regarding B-frames or the “rtptime-going-backwards”-scenario, as there were some concerns that this patch might break this behavior (which the tests shows it does not). 2016-11-03 16:33:53 +0100 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: fix bug in reschedule_timer The new timeout is always going to be (timeout + delay), however, the old behavior compared the current timeout to just (timeout), basically being (delay) off. This would happen if rtx-delay == rtx-retry-timeout, with the result that a second rtx attempt for any buffers would be scheduled immediately instead of after rtx-delay ms. Simply calculate (new_timeout = timeout + delay) and then use that instead. https://bugzilla.gnome.org/show_bug.cgi?id=773905 2016-12-01 15:06:06 +0530 Garima Gaur * gst/rtp/gstrtph264depay.c: * gst/rtp/gstrtpsbcdepay.c: rtp: Fix some memory leaks in usage of gst_pad_get_current_caps() https://bugzilla.gnome.org/show_bug.cgi?id=775071 2016-12-01 11:23:02 +0100 Edward Hervey * gst/isomp4/qtdemux.c: qtdemux: Sanitize unknown codec caps We might have non-printable characters in the unknown fourcc, replace them with '_', in the same way we do it for unknown tags. 2016-12-01 20:04:28 +0200 Sebastian Dröge * gst/avi/gstavidemux.c: avidemux: Free vprp chunk also if it existed but we made no use of it https://bugzilla.gnome.org/show_bug.cgi?id=775479 2016-12-01 17:38:33 +0200 Sebastian Dröge * gst/matroska/matroska-read-common.c: matroskademux: Fix memory leak when parsing attachments gst_tag_image_data_to_image_sample() does not take ownership of the passed memory, so don't set it to NULL to allow us to free it later. https://bugzilla.gnome.org/show_bug.cgi?id=775472 2016-12-01 14:56:18 +0200 Sebastian Dröge * gst/matroska/matroska-read-common.c: matroskademux: Unify zlib/bzip2 decompress loops with the ones from qtdemux Especially, simplify the code a bit. 2016-12-01 14:41:48 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Increase inflate buffer in bigger steps 1024 bytes is quite small, let's do 4096 bytes (or one page). Also remove redundant if, we're always in that case when getting here. 2016-12-01 14:30:49 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Ensure that size of the pasp atom is as much as we need https://bugzilla.gnome.org/show_bug.cgi?id=775455 2016-12-01 14:27:55 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Fix zlib inflate loop Handle errors cleanly, deallocate all memory and return the actual size of the inflated data. https://bugzilla.gnome.org/show_bug.cgi?id=775455 2016-12-01 14:30:10 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Free compressed moov node and it's corresponding decompressed data https://bugzilla.gnome.org/show_bug.cgi?id=775455 2016-12-01 14:29:21 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Check size of compressed MOOV header against available data And actually read the size of the cmvd atom from the right position. https://bugzilla.gnome.org/show_bug.cgi?id=775455 2016-12-01 13:38:16 +0200 Sebastian Dröge * gst/audioparsers/gstaacparse.c: aacparse: Make sure we have enough data in the codec_data to be able to parse it Also error out cleanly if mapping the buffer failed. https://bugzilla.gnome.org/show_bug.cgi?id=775450 2016-12-01 13:32:22 +0200 Sebastian Dröge * gst/isomp4/qtdemux.c: qtdemux: Fix out of bounds read in tag parsing code We can't simply assume that the length of the tag value as given inside the stream is correct but should also check against the amount of data we have actually available. https://bugzilla.gnome.org/show_bug.cgi?id=775451 2016-10-26 13:21:29 +0200 Alejandro G. Castro * gst/rtpmanager/gstrtpsession.c: * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsession.h: rtpbin: pipeline gets an EOS when any rtpsources byes Instead of sending EOS when a source byes we have to wait for all the sources to be gone, which means they already sent BYE and were removed from the session. We now handle the EOS in the rtcp loop checking the amount of sources in the session. https://bugzilla.gnome.org/show_bug.cgi?id=773218 2016-10-24 16:56:31 +0000 Enrique Ocaña González * gst/isomp4/qtdemux.c: qtdemux: Use the tfdt decode time on byte streams when it's significantly different than the time in the last sample We consider there's a sifnificant difference when it's larger than on second or than half the duration of the last processed fragment in case the latter is larger. https://bugzilla.gnome.org/show_bug.cgi?id=754230