Commit 08f993d0 authored by Sebastian Dröge's avatar Sebastian Dröge

Release 1.9.1

parent 49c644ce
=== release 1.9.1 ===
2016-07-06 Sebastian Dröge <>
releasing 1.9.1
2016-07-06 10:18:00 +0300 Sebastian Dröge <>
* po/af.po:
* po/az.po:
* po/bg.po:
* po/ca.po:
* po/cs.po:
* po/da.po:
* po/de.po:
* po/el.po:
* po/en_GB.po:
* po/eo.po:
* po/es.po:
* po/eu.po:
* po/fi.po:
* po/fr.po:
* po/gl.po:
* po/hr.po:
* po/hu.po:
* po/id.po:
* po/it.po:
* po/ja.po:
* po/lt.po:
* po/lv.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: Update translations
2016-06-30 16:36:27 +0200 Philippe Normand <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Take stream lock one time only on drain
When the drain is triggered from the chain function the lock is already
taken so there is no need to take it one more time.
2016-07-04 11:16:55 +0200 Sebastian Dröge <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: fix criticals fixating a non existent field
2016-07-04 11:12:25 +0200 Sebastian Dröge <>
* gst-libs/gst/audio/gstaudiodecoder.c:
audiodecoder: Protect samples_in/bytes_out and audio info with object lock
It might cause invalid calculations during the CONVERT query otherwise.
2016-07-04 11:07:54 +0200 Sebastian Dröge <>
* gst-libs/gst/audio/gstaudioencoder.c:
audioencoder: Protect samples_in/bytes_out and audio info with object lock
It might cause invalid calculations during the CONVERT query otherwise.
2016-07-04 11:00:51 +0200 Sebastian Dröge <>
* gst-libs/gst/audio/gstaudiodecoder.c:
* gst-libs/gst/audio/gstaudioencoder.c:
* gst-libs/gst/audio/gstaudioutilsprivate.c:
* gst-libs/gst/audio/gstaudioutilsprivate.h:
audioencoder/decoder: Move encoded audio conversion function to a common place
No need to duplicate this non-trivial function.
2016-07-04 09:15:03 +0100 Vincent Penquerc'h <>
* gst-libs/gst/audio/gstaudiodecoder.c:
audiodecoder: fix criticals fixating a non existent field
2016-07-04 10:55:07 +0200 Sebastian Dröge <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Use the object lock to protect bytes/time tracking
And especially don't use the stream lock for that, as otherwise non-serialized
queries (CONVERT) will cause the stream lock to be taken and easily causes the
application to deadlock.
2016-07-04 10:52:24 +0200 Sebastian Dröge <>
* gst-libs/gst/video/gstvideoencoder.c:
videoencoder: Use the object lock to protect bytes/time tracking
2016-07-04 10:47:36 +0200 Sebastian Dröge <>
* gst-libs/gst/video/gstvideodecoder.c:
* gst-libs/gst/video/gstvideoencoder.c:
* gst-libs/gst/video/gstvideoutilsprivate.c:
* gst-libs/gst/video/gstvideoutilsprivate.h:
videoencoder/decoder: Move conversion utility functions to a common header and use consistently in encoder/decoder
2016-03-17 00:19:18 +0200 Sebastian Dröge <>
* gst-libs/gst/app/gstappsrc.c:
appsrc: If do-timestamp=TRUE, capture the time when the buffer was pushed to the source
... instead of the time when it was pushed further downstream.
2016-04-29 00:59:42 -0700 Zaheer Abbas Merali <>
* gst-libs/gst/rtp/gstrtpbasedepayload.c:
basertpdepayload: create valid segment when given non-time segment
This will become an error in 1.10.
2016-06-30 18:53:07 +0100 Tim-Philipp Müller <>
* gst-libs/gst/tag/gsttagdemux.c:
tagdemux: fix handling of very short files in push mode
By default we'll wait for a certain amount of data before
attempting typefinding. However, if the stream is fairly
short, we might get EOS before we ever attempted any
typefinding, so at this point we should force typefinding
and output any pending data if we manage to detect the
2016-06-30 17:30:34 +0100 Tim-Philipp Müller <>
* gst-libs/gst/tag/gsttagdemux.c:
tagdemux: fix erroring out if we reach EOS without detecting type
In 0.10 the source pad was a dynamic pad that was only added once
the type had been detected, but in 1.x it's an always source pad,
so checking whether it's still NULL won't work to detect if the
type has been detected.
Makes tagdemux error out when we get EOS but haven't managed to
identify the format of the data after the tag.
2016-06-30 17:26:56 +0200 Edward Hervey <>
* gst/playback/gstparsebin.c:
parsebin: Fix authors and description
2016-06-30 17:26:14 +0200 Edward Hervey <>
* gst/playback/
* gst/playback/gstplayback.c:
* gst/playback/gstplayback.h:
* gst/playback/gsturidecodebin3.c:
playback: Remove uridecodebin3
This was committed by mistake. The solution forward is to use the
appropriate combination of urisourcebin and decodebin3
2016-06-29 18:14:51 +0200 Edward Hervey <>
* gst/playback/
* gst/playback/gstdecodebin3-parse.c:
* gst/playback/gstdecodebin3.c:
* gst/playback/gstparsebin.c:
* gst/playback/gstplayback.c:
* gst/playback/gstplayback.h:
* gst/playback/gstplaybin3.c:
* gst/playback/gsturidecodebin3.c:
* gst/playback/gsturisourcebin.c:
* tests/examples/
* tests/examples/decodebin_next/.gitignore:
* tests/examples/decodebin_next/
* tests/examples/decodebin_next/decodebin3.c:
* tests/examples/decodebin_next/playbin-test.c:
playback: New elements
With contributions from Jan Schmidt <>
* decodebin3 and playbin3 have the same purpose as the decodebin and
playbin elements, except make usage of more 1.x features and the new
GstStream API. This allows them to be more memory/cpu efficient.
* parsebin is a new element that demuxers/depayloads/parses an incoming
stream and exposes elementary streams. It is used by decodebin3.
It also automatically creates GstStream and GstStreamCollection for
elements that don't natively create them and sends the corresponding
events and messages
* Any application using playbin can use playbin3 by setting the env
variable USE_PLAYBIN3=1 without reconfiguration/recompilation.
2016-06-29 18:14:51 +0200 Sebastian Dröge <>
* gst-libs/gst/audio/audio-channels.c:
* gst/audioconvert/gstaudioconvert.c:
audioconvert: Handle fallback channel mask for mono correctly
It's 0 and no mask should be set for mono at all.
2016-06-27 20:53:37 +0300 Sebastian Dröge <>
* gst/playback/gstplaysink.c:
playsink: Don't send another step event to the audio-sink if we got step-done from there
Otherwise we would end up with a deadlock as the audio-sink emits step-done
from its streaming thread.
2016-06-27 20:49:38 +0300 Sebastian Dröge <>
* gst/playback/gstplaysink.c:
playsink: Force STEP events on the video-sink for GST_FORMAT_BUFFERS
It does not make much sense for audio sinks.
2016-06-24 01:56:11 +0530 Nirbheek Chauhan <>
configure: Need to add -DGST_STATIC_COMPILATION when building only statically
2016-06-23 10:22:35 +0100 Vincent Penquerc'h <>
* ext/ogg/gstoggdemux.c:
oggdemux: demote an expected error to debug
Dropping a buffer because we have a seek pending is normal,
and will now happen when we trigger a seek while going through
the packets in a page. So this should not be an error.
2016-06-22 16:02:37 +0200 Wim Taymans <>
* gst-libs/gst/video/video-converter.c:
* gst-libs/gst/video/video-resampler.c:
* gst-libs/gst/video/video-resampler.h:
* gst-libs/gst/video/video-scaler.c:
video-converter: fix interlaced scaling some more
Fix problem with the line cache where it would forget the first line in
the cache in some cases.
Keep as much backlog as we have taps. This generally works better and we
could do even better by calculating the overlap in all taps.
Allocated enough lines for the line cache.
Use only half the number of taps for the interlaced lines because we
only have half the number of lines.
The pixel shift should be relative to the new output pixel size so scale
2016-06-21 14:53:36 -0400 Nicolas Dufresne <>
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
plugin-doc: Minor re-order
2016-06-21 14:40:17 -0400 Nicolas Dufresne <>
* docs/plugins/
* docs/plugins/gst-plugins-base-plugins-sections.txt:
* docs/plugins/gst-plugins-base-plugins.signals:
* docs/plugins/inspect/plugin-pango.xml:
* docs/plugins/inspect/plugin-videoconvert.xml:
* docs/plugins/inspect/plugin-videoscale.xml:
* docs/plugins/inspect/plugin-videotestsrc.xml:
Automatic update of plugins doc files
2016-06-21 18:04:23 +0100 Tim-Philipp Müller <>
* tests/check/libs/discoverer.c:
tests: discoverer: handle missing ogg/codec plugins gracefully
2016-06-21 11:45:49 -0400 Nicolas Dufresne <>
* common:
Automatic update of common submodule
From ac2f647 to f363b32
2016-06-20 12:42:28 +0100 Vincent Penquerc'h <>
* ext/opus/gstopusdec.c:
* ext/opus/gstopusdec.h:
opusdec: handle missing buffers with no duration
If buffer duration is missing, it is parsed from the packet data.
This is not foolproof, since Opus can change durations on the
2016-06-17 15:11:20 +0200 Michael Olbrich <>
* gst-libs/gst/tag/gsttagdemux.c:
tagdemux: preserve duration when skipping a tag at the beginning of a buffer
gst_buffer_copy_region() does not copy the duration if it doesn't start
with the first byte. We just skip the tag here, so the duration is still
2016-06-21 10:24:15 +0300 Sebastian Dröge <>
* gst-libs/gst/pbutils/gstdiscoverer.c:
* tests/check/libs/discoverer.c:
discoverer: Only allow serializing OK discoverer infos to GVariants
They will be incomplete otherwise and we can't generate the full serialized
information, and instead will crash somewhere on the way.
2016-04-14 14:02:27 +0100 Vincent Penquerc'h <>
* ext/ogg/gstoggdemux.c:
oggdemux: fix audio glitches with low bitrate vorbis
A low bitrate stream which can pack more than 2 seconds of audio
in a page would cause the stream's position to be updated not
often enough, and would trigger a spurious "jump" via a GAP
event. Instead, we update the stream position after calculating
the new overall segment position.
2016-06-16 10:55:52 +0100 Mikhail Fludkov <>
* tests/check/elements/opus.c:
opusdec: test for PLC timestamp when FEC is enabled.
2016-04-05 12:41:45 +0200 Mikhail Fludkov <>
* gst-libs/gst/audio/gstaudiodecoder.c:
* tests/check/libs/audiodecoder.c:
audiodecoder: fix invalid timestamps when PLC and delay
Elements inherited from GstAudioDecoder, supporting PLC and introducing
delay produce invalid timestamps. Good example is opusdec with in-band FEC
enabled. After receiving GAP event it delays the audio concealment until
the next buffer arrives. The next buffer will have DISCONT flag set which
will make GstAudioDecoder to reset it's internal state, thus forgetting
the timestamp of GAP event. As a result the concealed audio will have the
timestamp of the next buffer (with DISCONT flag) but not the timestamp
from the event.
2016-06-11 17:11:30 +0200 Paulo Neves <>
* gst-libs/gst/tag/gstexiftag.c:
* tests/check/libs/tag.c:
exiftag: Increase serialized geo precision
The serialization of double typed geographical
coordinates to DMS system supported by the exif
standards was previously truncated without need.
The previous code truncated the seconds part of
the coordinate to a fraction with denominator
equal to 1 causing a bug on the deserialization
when the test for the coordinate to be serialized
was more precise.
This patch applies a 10E6 multiplier to the numerator
equal to the denominator of the rational number.
Eg. Latitude = 89.5688643 Serialization
DMS Old code = 89/1 deg, 34/1 min, 7/1 sec
DMS New code = 89/1 deg, 34/1 min, 79114800UL/10000000UL
DMS Old code = 89.5686111111
DMS New code = 89.5688643
The new test tries to serialize a higher precision
The types of the coordinates are also guint32 instead
of gint like previously. guint32 is the type of the
fraction components in the exif.
2016-06-10 22:36:32 -0400 Thomas Jones <>
* gst-libs/gst/pbutils/gstaudiovisualizer.c:
audiovisualizer: Fix calculations for bytes<->samples conversions
Use bpf instead of channels * sizeof(gint16).
2016-06-10 14:04:36 -0400 Thomas Jones <>
* gst-libs/gst/pbutils/gstaudiovisualizer.c:
audiovisualizer: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
2016-06-10 22:50:41 -0400 Thomas Jones <>
* gst-libs/gst/pbutils/gstaudiovisualizer.c:
audiovisualizer: fix timestamp calculation for audio channels > 1
We have to use bps*channels instead of just bps, which is exactly what bpf is for.
2015-04-09 19:09:17 +0200 Víctor Manuel Jáquez Leal <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: handle buffer's flags at offset
For reverse playback it is important to handle correctly the frame sync
points, which is set when the input buffer doesn't have the DELTA_UNIT flag.
This is handled correctly when decoder is packetized, but when it is not the
frame's sync point is not copied, and the reverse playback never decodes frame
The current patch adds the buffer's flags to the Timestamp list, where the
timestamp and duration of the input buffers are hold.
2015-04-09 19:18:58 +0200 Víctor Manuel Jáquez Leal <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: squash two message logs into one
There were two consecutive log messages in gst_video_decoder_decode_frame().
Given the information they provide, it is more efficient to squash them into a
single one.
2015-04-09 19:16:10 +0200 Víctor Manuel Jáquez Leal <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: playback rate is in input_segment
The playback rate is hold in the input_segment member variable, not in the
output_segment, and the parse_gather list was never filled because of that.
This patch changes the comparison with input_segment.
2016-06-09 19:02:49 +0300 Sebastian Dröge <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Use input segment rate instead of output segment rate to decide whether the drain on keyframes
The output segment is only set up after data is output, which might be far in
the future for reverse playback. Also we are here interested in the state at
the current *input* frame (which is the keyframe), not any possible output.
2016-06-09 18:53:54 +0300 Sebastian Dröge <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Only drain in KEY_UNITS trick mode after a keyframe in forwards playback mode
For reverse playback the same behaviour was already implemented in
For reverse playback, chain_forward() is only used to gather frames and not
for decoding, and it is actually called by the draining logic, causing an
infinite recursion.
2016-06-07 09:48:35 +0200 Edward Hervey <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Don't push late frames
While it's a bit tricky to discard frames *before* decoding (because
we might not be sure which data is needed or not by the decoder), we
can discard them after decoding if they are too late anyway.
Any following basetransform based element or similar would drop the frame too.
2016-06-07 10:31:59 +0200 Edward Hervey <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Avoid recursive drain/flush calls
_chain_forward() can also be called with reverse playback. Blindly
calling drain_out() on DISCONT buffers would end up in a recursive
2016-06-04 09:51:17 +0200 Edward Hervey <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Drain out keyframes in TRICK_MODE_KEY_UNITS
When asked to just decode keyframe, if we got a keyframe drain out
the decoder straight away.
This avoids having to wait for the next frame and reduces delay even
2016-06-04 09:49:00 +0200 Edward Hervey <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Drain decoder on DISCONT buffers
This ensures the decoder is properly drained out when receiving a
DISCONT buffer. The optimal way of doing this would have been to
receive a GAP event before hand but it is not always possible.
Fixes big delays with some decoders (ex gst-libav) that will not
drain out data when only decoding keyframes.
2016-06-01 11:02:12 +0200 Michael Olbrich <>
* gst-libs/gst/tag/gsttagdemux.c:
tagdemux: preserve timestamp when skipping a tag at the beginning of a buffer
gst_buffer_copy_region() does not copy the timestamp if it doesn't start
with the first byte. We just skip the tag here, so the timestamp is still
2016-05-10 13:56:13 +0200 Stian Selnes <>
* gst-libs/gst/video/video-color.c:
* tests/check/libs/video.c:
video-color: Fix colorimetry IS_UNKNOWN
Fix issue with colorimetry default indicies not being in sync with the
actual table causing IS_UNKNOWN() to sometimes fail.
2016-06-02 13:07:01 +0200 Guillaume Desmottes <>
* ext/opus/gstopusenc.c:
* gst/playback/gstsubtitleoverlay.c:
opusenc, subtitleoverlay: use MAY_BE_LEAKED flag
Flag caps that are cached locally and will never be freed.
2016-06-01 16:56:13 +0300 Sebastian Dröge <>
* gst/playback/gstdecodebin2.c:
decodebin: Create a new decode element with the parser/convert capsfilter if there is a multiqueue after the parser
2016-05-23 15:11:53 +0200 Edward Hervey <>
* gst-libs/gst/video/gstvideodecoder.c:
videodecoder: Make sure the DISCONT flag is set on the outgoing buffer
The base class was setting the DISCONT flag before checking whether the buffer
would be in segment or not.
Fix issues with DISCONT flags not being properly propagated downstream when
decoders buffers were out of segment.
2016-06-01 15:31:52 +0200 Joan Pau Beltran <>
* docs/design/part-mediatype-video-raw.txt:
docs: design: add IYU2 raw video format description
2016-06-01 12:36:38 +0100 Tim-Philipp Müller <>
* ext/pango/gstbasetextoverlay.c:
textoverlay: enable shaded background drawing for new IYU2 format
2016-05-30 16:40:26 +0200 Joan Pau Beltran <>
* gst-libs/gst/video/video-converter.c:
* gst-libs/gst/video/video-format.c:
* gst-libs/gst/video/video-format.h:
* gst-libs/gst/video/video-info.c:
* gst-libs/gst/video/video-scaler.c:
* tests/check/libs/video.c:
video: add IYU2 format
This existed in 0.10 and is needed by dc1394src.
IYU2 format is a YUV fully-sampled packed format similar to v308
but with different component order (U-Y-V instead of Y-U-V).
2016-03-17 23:47:48 +0530 Nirbheek Chauhan <>
* ext/libvisual/visual.c:
libvisual: Factor out endian-order RGB formats
MSVC seems to ignore preprocessor conditionals inside static
pad templates. Also remove unnecessary quotes inside caps strings.
2016-05-24 00:44:21 +0100 Tim-Philipp Müller <>
* gst-libs/gst/allocators/
* gst-libs/gst/app/
* gst-libs/gst/audio/
* gst-libs/gst/fft/
* gst-libs/gst/pbutils/
* gst-libs/gst/riff/
* gst-libs/gst/rtp/
* gst-libs/gst/rtsp/
* gst-libs/gst/sdp/
* gst-libs/gst/tag/
* gst-libs/gst/video/
g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.
2016-05-23 19:28:39 +0100 Tim-Philipp Müller <>
* ext/opus/gstopusdec.c:
* ext/opus/gstopusenc.c:
opus: use default error messages in some more cases
2016-05-23 15:35:39 +0100 Tim-Philipp Müller <>
* ext/opus/gstopusdec.c:
opusdec: use default error message strings in more cases
Details should go into the debug message. We should probably
make up new codes for encoder/decoder lib init failures too.
2016-05-19 12:26:05 -0400 Olivier Crête <>
* ext/opus/gstopusdec.c:
* ext/opus/gstopusenc.c:
opus: Post error message on GST_FLOW_ERROR
2016-05-14 14:41:28 +0200 Olivier Crête <>
* ext/opus/gstopusdec.c:
This way, the first invalid stream won't break all decoding.
2016-05-16 12:52:50 +0200 Guillaume Desmottes <>
* gst-libs/gst/video/gstvideosink.c:
videosink: ensure the debug category is always initialized
gst_video_sink_center_rect() can be called without a GstVideoSink
having been instantiated so we can't relly on the video sink
class_init function to init the category.
Fix a warning when running:
GST_CHECKS=test_video_center_rect GST_DEBUG=6 G_DEBUG=fatal_warnings make libs/video.check-norepeat
2016-05-16 15:39:02 +0200 Guillaume Desmottes <>
* gst/playback/gstplaybin2.c:
playbin: fix suburidecodebin leak
We take a ref before removing which was never freeded.
The element is still alive anyway because the group has its own ref as
Fix a leak with the 'test_suburi_error_wrongproto' test.
2016-05-16 09:52:35 +0100 Tim-Philipp Müller <>
* tests/check/elements/playbin.c:
tests: playbin: add test for new "element-setup" signal
2016-05-14 11:28:01 +0100 Tim-Philipp Müller <>
* gst/playback/gstplaybin2.c:
playbin: add "element-setup" signal
Allows configuration of plugged elements.
2016-05-15 14:43:11 +0100 Tim-Philipp Müller <>
* gst-libs/gst/app/.gitignore:
* gst-libs/gst/app/gstapp-marshal.list:
app: remove marshaller files from git
2016-05-15 14:37:41 +0100 Tim-Philipp Müller <>
* gst-libs/gst/app/
* gst-libs/gst/app/gstappsink.c:
* gst-libs/gst/app/gstappsrc.c:
app: use generic marshallers
2016-05-15 12:01:17 +0200 Edward Hervey <>
* ext/ogg/gstoggdemux.c:
oggdemux: Reset keyframe_granule when needed
This avoids ending up with bogus values when doing flushing seeks
in push-mode.
2016-05-15 13:31:03 +0300 Sebastian Dröge <>
* docs/plugins/gst-plugins-base-plugins.args:
* docs/plugins/inspect/plugin-adder.xml:
* docs/plugins/inspect/plugin-alsa.xml:
* docs/plugins/inspect/plugin-app.xml:
* docs/plugins/inspect/plugin-audioconvert.xml:
* docs/plugins/inspect/plugin-audiorate.xml:
* docs/plugins/inspect/plugin-audioresample.xml:
* docs/plugins/inspect/plugin-audiotestsrc.xml:
* docs/plugins/inspect/plugin-cdparanoia.xml:
* docs/plugins/inspect/plugin-encoding.xml:
* docs/plugins/inspect/plugin-gio.xml:
* docs/plugins/inspect/plugin-libvisual.xml:
* docs/plugins/inspect/plugin-ogg.xml:
* docs/plugins/inspect/plugin-opus.xml:
* docs/plugins/inspect/plugin-pango.xml:
* docs/plugins/inspect/plugin-playback.xml:
* docs/plugins/inspect/plugin-subparse.xml:
* docs/plugins/inspect/plugin-tcp.xml:
* docs/plugins/inspect/plugin-theora.xml:
* docs/plugins/inspect/plugin-typefindfunctions.xml:
* docs/plugins/inspect/plugin-videoconvert.xml:
* docs/plugins/inspect/plugin-videorate.xml:
* docs/plugins/inspect/plugin-videoscale.xml:
* docs/plugins/inspect/plugin-videotestsrc.xml:
* docs/plugins/inspect/plugin-volume.xml:
* docs/plugins/inspect/plugin-vorbis.xml:
* docs/plugins/inspect/plugin-ximagesink.xml:
* docs/plugins/inspect/plugin-xvimagesink.xml:
docs: Update for git master
2016-05-14 15:43:24 +0300 Matthew Waters <>
* gst-libs/gst/video/gstvideoaffinetransformationmeta.h:
video/affinetransformationmeta: define the coordinate space used
Based on the expected output from the already existing usage by androidmedia
and the opengl plugins.
2015-12-17 19:38:33 +0000 Tim-Philipp Müller <>
* gst-libs/gst/pbutils/descriptions.c: