=== release 1.9.90 === 2016-09-30 Sebastian Dröge * configure.ac: releasing 1.9.90 2016-09-30 11:43:54 +0300 Sebastian Dröge * po/el.po: po: Update translations 2016-09-30 13:22:32 +0530 Arun Raghavan * tests/check/pipelines/tagschecking.c: tests: Fix tagschecking failure due to missing PTS qtmux now needs the PTS (commit a993883b7), so let's make sure we produce one with our buffers. https://bugzilla.gnome.org/show_bug.cgi?id=772228 2016-09-28 23:03:58 +0300 Sebastian Dröge * gst/isomp4/gstqtmux.c: qtmux: Don't calculate PTS offset and DTS with GST_CLOCK_TIME_NONE Just error out if there is no valid PTS. https://bugzilla.gnome.org/show_bug.cgi?id=772143 2016-09-29 17:37:28 +0300 Sebastian Dröge * gst/isomp4/qtdemux_types.c: qtdemux: Add JPEG2000 ihdr atom to the list of known ones Otherwise qtdemux is always going to complain about it being unknown. 2016-09-29 10:19:56 +0300 Sebastian Dröge * gst/matroska/matroska-mux.c: matroskamux: Always write the default frame duration for VP8/9 too The WebM spec allows this now, and it allows us to guess a framerate. See https://bugzilla.gnome.org/show_bug.cgi?id=772141 and also https://bugzilla.gnome.org/show_bug.cgi?id=654379 2016-09-27 15:26:19 -0400 Olivier Crête * gst/rtp/gstrtph264depay.c: * gst/rtp/gstrtph265depay.c: rtph26[45]depay: Don't handle NALs inside STAP units twice They've already been handled before pushing them into the adapter. 2016-09-27 12:39:12 +0100 Tim-Philipp Müller * tests/check/meson.build: meson: tests: fix vp8 availability checks Those variables are not defined if vp8 was not found. 2016-09-27 10:23:38 +0100 Tim-Philipp Müller * gst/multifile/gstmultifilesink.c: Revert "multifilesink: streamline the file-switch code a bit" This reverts commit f1ceaab02f3f557e23b77b14771a575788f92bb4. This broke atomic file writes in "buffer" mode. It did make sure that any streamheaders are prepended to each file in buffer mode as well, but that's not really needed in practice, whereas atomic file writes are, so let's restore the status quo ante for now since this was primarily a code cleanup anyway, and if anyone needs to streamheaders in buffer mode too they can make a patch to implement that differently. Re-implementing the atomic writes in the element also seems way too much work. https://bugzilla.gnome.org/show_bug.cgi?id=766990 2016-09-27 10:22:57 +0100 Tim-Philipp Müller * gst/multifile/gstmultifilesink.c: Revert "multifilesink: close file on write error with next-file mode is set to buffer" This reverts commit 84e441d2685cf223d348a95be0c5ba693bbf6624. This will no longer be needed once we revert f1ceaab02. 2016-09-26 13:22:29 -0300 Thibault Saunier * tests/check/meson.build: meson: Add gst-plugins-base plugins directories to be used by tests 2016-09-26 14:30:00 +0100 Tim-Philipp Müller * ext/vpx/meson.build: * meson.build: * tests/check/getpluginsdir: * tests/check/meson.build: meson: add unit tests Only works properly in an installed setup currently, most likely won't work with a subprojects setup yet. 2016-09-24 09:36:24 +0100 Tim-Philipp Müller * meson.build: * po/meson.build: meson: hook up translations 2016-09-08 17:30:41 +0530 Arun Raghavan * ext/pulse/pulsesrc.c: pulsesrc: Don't negotiate to less than two segments GstAudioRingBuffer doesn't needs us to have at least 2 segments. We make sure that if our buffer parameters are such that the maxlength is not at least 2x fragsize, we still request the ringbuffer to keep that much space so it continues to work. https://bugzilla.gnome.org/show_bug.cgi?id=770446 2016-09-24 23:22:01 +0530 Arun Raghavan * gst/rtp/gstrtpsbcpay.c: * gst/rtp/gstrtpsbcpay.h: rtpsbcpay: Fix timestamping We were just picking the timestamp of the last buffer pushed into our adapter before we had enough data to push out. This fixes things to figure out how large each frame is and what duration it covers, so we can set both the timestamp and duration correctly. Also adds some DISCONT handling. 2016-07-12 18:14:52 +0200 Georg Lippitsch * gst/isomp4/gstqtmux.c: qtmux: Fix fourcc for ProRes Proxy This is apco, according to https://wiki.multimedia.cx/index.php?title=Apple_ProRes https://bugzilla.gnome.org/show_bug.cgi?id=769048 2016-09-18 20:55:31 +0100 Tim-Philipp Müller * ext/vpx/meson.build: meson: fix build with vpx 1.3.x vpx >= 1.4.0 is optional 2016-09-15 18:19:35 +0200 Sebastian Dröge * gst/rtsp/gstrtspsrc.c: rtspsrc: Use new bin suppressed flags API for managing the element flags 2016-09-15 09:52:31 +0100 Tim-Philipp Müller * ext/jack/gstjackaudioclient.c: * gst/rtp/dboolhuff.c: * gst/rtpmanager/rtpsession.c: * gst/videofilter/gstvideoflip.c: ext, gst: fix indentation 2016-09-15 09:52:17 +0100 Tim-Philipp Müller * tests/check/elements/flvmux.c: * tests/check/elements/rtph263.c: * tests/check/elements/rtpjitterbuffer.c: * tests/check/elements/rtpsession.c: * tests/check/elements/rtpvp9.c: tests: fix indentation 2016-08-11 11:04:22 -0600 Thomas Bluemel * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Fix calculating next_seqnum when dropping old buffers from a full queue. Fixes calculating the next sequence number when a ITEM_TYPE_LOST with more than one definitely lost packets is encountered. https://bugzilla.gnome.org/show_bug.cgi?id=769757 2016-08-11 23:07:44 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: improved rtx-rtt averaging The basic idea is this: 1. For *larger* rtx-rtt, weigh a new measurement as before 2. For *smaller* rtx-rtt, be a bit more conservative and weigh a bit less 3. For very large measurements, consider them "outliers" and count them a lot less The idea being that reducing the rtx-rtt is much more harmful then increasing it, since we don't want to be underestimating the rtt of the network, and when using this number to estimate the latency you need for you jitterbuffer, you would rather want it to be a bit larger then a bit smaller, potentially losing rtx-packets. The "outlier-detector" is there to prevent a single skewed measurement to affect the outcome too much. On wireless networks, these are surprisingly common. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-08-05 12:51:59 +0200 Stian Selnes * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Detect whether to assume equidistant spacing when loss Assuming equidistant packet spacing when that's not true leads to more loss than necessary in the case of reordering and jitter. Typically this is true for video where one frame often consists of multiple packets with the same rtp timestamp. In this case it's better to assume that the missing packets have the same timestamp as the last received packet, so that the scheduled lost timer does not time out too early causing the packets to be considered lost even though they may arrive in time. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-07-27 10:39:50 +0200 Stian Selnes * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Don't request rtx if 'now' is past retry period There is no need to schedule another EXPECTED timer if we're already past the retry period. Under normal operation this won't happen, but if there are more timers than the jitterbuffer is able to process in real-time, scheduling more timers will just make the situation worse. Instead, consider this packet as lost and move on. This scenario can occur with high loss rate, low rtt and high configured latency. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-07-26 18:01:48 +0200 Stian Selnes * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Fix lost duration when gap after lost timer This patch fixes an issue with the estimated gap duration when there is a gap immediately after a lost timer has been processed. Previously there was a discrepancy beteen the gap in seqnum and gap in dts which would cause wrong calculated duration. The issue would only be seen with retranmission enabled since when it's disabled lost timers are only created when a packet is received and the actual gap length and last dts is known. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-07-19 01:11:58 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Expose rtx-deadline as a property The default -1 gives the old behavior. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-08-11 12:02:19 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Improved expected-timer handling when gap > 0 https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-08-11 11:51:50 +0200 Stian Selnes * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Major improvements for RTX stats Stats should also be collected for unsuccessful packets. rtx-rtt is very important for determining the necessary configured latency on the jitterbuffer. It's especially important to be able to increase the latency when retransmitted packets arrive too late and are considered lost. This patch includes these late packets in the calculation of the various rtx stats, making them more correct and useful. Also in the case where the original packet arrives after a NACK is sent, the received RTX packet should update the stats since it provides useful information about RTT. The RTT is only updated if and only if all requested retranmissions are received. That way the RTT is guaranteed to make sense. If not we don't know which request the packet is a response to and the RTT may be bogus. A consequence of this patch is that RTT is not updated for a request when one of the RTX packets for that seqnum is lost, but that since measured RTT will be more accurate. The implementation store the RTX information from the timed out timers and use this when the retransmitted packet arrives. For performance these timers are stored separately from the "normal" timers in order to not impact performance (see attached performance test). https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-08-11 11:02:44 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Add and expose more stats and increase testing of it Add num-pushed and num-lost. Expose num-late, num-duplicates and avg-jitter. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-07-07 10:20:02 +0200 Stian Selnes * gst/rtpmanager/gstrtprtxreceive.c: rtxreceive: Set buffer flag for retransmitted packets https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-07-09 23:47:41 +0200 Havard Graff * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Option to disable rtx-delay-reorder When disabled we can save some iterations over timers. There is probably an argument for rtx-delay-reorder to exist, but for normal operations, handling jitter (reordering) is something a jitterbuffer should do, and this variable feels like functionality that is not "in-sync" with what the jitterbuffer is trying to achieve. Example: You have 50ms jitter on your network, and are receiving audio packets with 10ms durations. An audio packet should not be considered late until its rtx-timeout has expired (and hence a rtx-event is sent), but with rtx-delay-reorder, events will be sent pretty much all the time due to the jitter on the network. Point being: The jitterbuffer should adapt its size to the measured network jitter, and then rtx-delay-reorder needs to adapt as well, or simply get out of the way and let the other (better) rtx-mechanisms do their job. Also change find_timer to only use seqnum as an argument, since there will only ever be one timer per seqnum at any given time. In the one case where the type matters, the caller simply checks the type. https://bugzilla.gnome.org/show_bug.cgi?id=769768 2016-09-14 09:58:41 -0400 Olivier Crête * gst/rtp/gstrtph263pay.c: rtph263pay: Fix double free from coverity CID #1372887 2016-09-14 09:58:37 -0400 Olivier Crête * gst/rtp/gstrtph263pay.c: rtph263pay: Indent as per gst-indent 2016-09-14 11:30:41 +0200 Sebastian Dröge * configure.ac: configure: Depend on gstreamer 1.9.2.1 2016-09-14 10:17:02 +0900 Wonchul Lee * gst/autodetect/gstautodetect.c: autodetect: Use gst_bin_set_suppressed_flags() API https://bugzilla.gnome.org/show_bug.cgi?id=771395 2016-09-09 15:36:12 +0200 Thomas Scheuermann * ext/jack/gstjackaudioclient.c: jack: Fix pipeline hang when jack changes sample rate or buffer size If jackd changes the buffer size or sample rate, jackaudiosink hangs and can't be stopped. This also happens if jack is configured as slave and a gstreamer pipeline is started on the slave machine while the jack master isn't running yet. If the the jack master is started it changes the buffer size / sample rate and jackaudiosink can't be stopped. This fix calls jack_shutdown_cb when jack_sample_rate_cb or jack_buffer_size_cb is called. https://bugzilla.gnome.org/show_bug.cgi?id=771272 2016-09-12 20:08:36 +0200 Sebastian Dröge * gst/deinterlace/gstdeinterlace.c: deinterlace: Fix field ordering for reverse playback And actually calculate the field duration instead of a frame duration so that we can properly timestamp output frames in fields=all mode. This is probably still broken for reverse playback in telecine mode. 2016-09-12 09:02:00 +0000 Thomas Klausner * gst/udp/gstudpsrc.c: udpsrc: Fix compilation on NetBSD https://bugzilla.gnome.org/show_bug.cgi?id=771278 2016-09-10 20:51:10 +1000 Jan Schmidt * autogen.sh: * common: Automatic update of common submodule From b18d820 to f980fd9 2016-09-09 14:02:25 +0200 Xabier Rodriguez Calvar * gst/isomp4/qtdemux.c: qtdemux: offset is irrelevant when no crypto info Cause later it will try to use the crypto info array to get an index and attach on of the positions as buffer's crypto info. https://bugzilla.gnome.org/show_bug.cgi?id=770951 2016-09-10 09:53:57 +1000 Jan Schmidt * autogen.sh: * common: Automatic update of common submodule From f49c55e to b18d820 2016-09-07 15:33:30 -0400 Nicolas Dufresne * sys/osxaudio/Makefile.am: osxaudio: Distribute device provider files Those where missing the the dev release tarballs for 1.9.2 which prevented building from tarball on OSX platform 2016-09-06 09:49:39 +0200 Xabier Rodriguez Calvar * gst/isomp4/qtdemux.c: qtdemux: Fix crash with no cenc aux offset https://bugzilla.gnome.org/show_bug.cgi?id=770951 2016-09-05 09:39:33 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: aacparse: parse a bit more of the humongous LOAS data https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-09-05 09:39:08 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: aacparse: make it clear when a potential LOAS frame is not one https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-09-05 09:38:26 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: aacparse: add a few comments to anchor parsing to the spec https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-09-05 09:37:02 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: * gst/audioparsers/gstaacparse.h: aacparse: improve channel/rate handling Keep track of the last parsed channels/rate fields so they can be used even if the element was not yet configured. https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-09-05 09:35:53 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: aacparse: fix varlength number reading as per spec https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-09-05 09:35:02 +0100 Vincent Penquerc'h * gst/audioparsers/gstaacparse.c: aacparse: strip uneeded static arrays slack https://bugzilla.gnome.org/show_bug.cgi?id=769278 2016-07-18 19:18:58 -0400 Olivier Crête * gst/rtp/gstrtpmp4adepay.c: * gst/rtp/gstrtpmp4adepay.h: rtpmp4adepay: Only declare a stream to be framed once a marker bit has been seen This may cause a few packets to be processed by the parser, but it's better than never pushing out buffers from a slightly broken stream where no marker bits are set. 2016-09-06 14:25:42 +0300 Sebastian Dröge * ext/dv/gstdvdemux.c: dvdemux: Fix timestamping in reverse playback mode This is only supported right now if after a demuxer that supports reverse playback, e.g. with DV container inside AVI container. 2016-09-05 12:23:54 -0300 Thibault Saunier * meson.build: meson: Bump version to 1.9.2 2015-06-26 20:13:17 +0200 Mathieu Duponchelle * gst/isomp4/GstQTMux.prs: * gst/isomp4/Makefile.am: * gst/isomp4/gstqtmux.c: qtmux: Implement the preset interface. + And provide a "youtube" preset, which based on https://support.google.com/youtube/answer/1722171 sets faststart to True. https://bugzilla.gnome.org/show_bug.cgi?id=751559 2016-09-01 12:27:35 +0300 Sebastian Dröge * configure.ac: Back to development