Commit a3fba2bb authored by Sebastian Dröge's avatar Sebastian Dröge

Release 1.9.1

parent ff285954
=== release 1.9.1 ===
2016-07-06 Sebastian Dröge <>
releasing 1.9.1
2016-07-06 11:22:53 +0300 Steven Hoving <>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Fix error messages to first convert to doubles before division
2016-07-06 10:18:30 +0300 Sebastian Dröge <>
* po/da.po:
* po/hr.po:
* po/pt_BR.po:
* po/sk.po:
po: Update translations
2016-07-05 21:11:35 +0300 Sebastian Dröge <>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Set to PLAYING after a seek again after setting up the segment and everything else
There's a small window for a race condition otherwise.
2016-07-04 17:45:40 +0200 Sebastian Dröge <>
* tests/check/elements/qtmux.c:
qtmux: Use complete AAC caps with codec_data in the tests
2016-07-04 16:58:38 +0200 Sebastian Dröge <>
* gst/audioparsers/gstaacparse.c:
aacparse: Reject raw AAC if no codec_data is found in the caps
If necessary, a demuxer will have to invent something here but this is only a
problem with non-conformant files anyway.
2016-07-04 16:55:32 +0200 Sebastian Dröge <>
* gst/isomp4/qtdemux.c:
qtdemux: Invent AAC codec_data if none is present
Without, raw AAC can't be handled and we have some information available in
the decoder that most likely allows us to decode the stream in one way or
another. This is the same code already used by matroskademux for the same
reasons, and ffmpeg/vlc play such files just fine too by guesswork.
2016-07-04 14:54:13 +0200 Sebastian Dröge <>
* gst/isomp4/gstqtmux.c:
qtmux: Reject raw AAC caps without codec_data
The resulting file is not going to be playable without guesswork and raw caps
should always have codec_data.
2016-05-10 15:48:49 +0200 Edward Hervey <>
qtdemux: Handle upstream GAP in push-mode/time segment
This is to handle cases where upstream handles the fragmented streaming in TIME
segments and sends us data with gaps within fragments. This would happen when dealing
with trick-modes.
When upstream (push-based, TIME SEGMENT) wishes to send discontinuous samples,
it must obey the following rules:
* The buffer containing the [moof] must have a valid GST_BUFFER_OFFSET
* The buffers containing the first sample after a gap:
* MUST start at the beginning of a sample,
* MUST have the DISCONT flag set,
* MUST have a valid GST_BUFFER_OFFSET relative to the beginning of the fragment.
2016-07-01 11:54:57 +0100 Tim-Philipp Müller <>
* sys/v4l2/v4l2-utils.c:
v4l2: fix potential double-free of error debug string
gst_v4l2_clear_error() doesn't work like g_clear_error(), it
doesn't NULLify the pointer, so set freed debug string to NULL
so it doesn't get freed again if gst_v4l2_clear_error() is
called twice on the error.
CID 1362901
2016-07-01 10:05:00 +0000 Brad Lackey <>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Don't disable UDP protocols on redirecting
2016-07-01 17:28:17 +0900 Seungha Yang <>
* gst/isomp4/qtdemux.c:
qtdemux: Push caps only when it was updated
Commit 7873bede3134b15e5066e8d14e54d1f5054d2063 caused new caps
event per moof without consideration of duplication.
2016-06-30 15:01:46 +0200 Jonas Holmberg <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: fix invalid memory access
10 bytes was allocated for stream_format but size of "byte-stream" is
more. Use g_strdup() instead.
2016-06-29 23:31:20 +0200 Sebastian Dröge <>
* ext/shout2/gstshout2.c:
shout2: Use a non-timer GstPoll
Otherwise set_flushing() will have undefined semantics and nowadays causes a
g_critical() to warn about that.
2016-06-19 02:08:25 -0300 Thiago Santos <>
* ext/soup/gstsouphttpsrc.c:
* ext/soup/gstsouphttpsrc.h:
souphttpsrc: dynamically adjust blocksize
Update the blocksize depending on how much is obtained from a read
of the input stream. This avoids doing too many reads in small chunks
when larger amounts of data are available and also prevents using
a very large memory area to read a small chunk of data.
2016-06-28 16:44:50 +0300 Sebastian Dröge <>
* gst/udp/gstudpsrc.c:
udpsrc: Windows has no ipi_spec_dst in struct in_pktinfo
2016-06-28 15:15:14 +0300 Sebastian Dröge <>
* gst/udp/gstudpsrc.c:
udpsrc: #define __APPLE_USE_RFC_3542 to be able to use IPV6_PKTINFO on OSX/iOS
2016-06-28 15:08:04 +0300 Sebastian Dröge <>
* gst/udp/gstudpsrc.c:
udpsrc: Move #includes around to a) work around broken glibc header and b) Windows
2016-06-28 14:25:03 +0300 Sebastian Dröge <>
* gst/udp/gstudpsrc.c:
udpsrc: Fix compilation on Windows and *BSD/OSX
2016-06-23 20:21:59 +0300 Sebastian Dröge <>
* gst/udp/gstudpsrc.c:
udpsrc: Filter out multicast packets that are not for our multicast address
2016-06-28 10:57:27 +0300 Sebastian Dröge <>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: When seeking, consider the current element state or pending state instead of the RTSP state
If we consider the RTSP state, what can happen is that it is PLAYING but the
element already asynchronously tried to PAUSE and it just did not happen yet.
We would then override this setting to PAUSED (while the element actually is
in PAUSED) and set the RTSP state to PLAYING again. This would then cause us
to produce packets while the sinks are all PAUSED, piling up thousands of
packets in the rtpjitterbuffer and other elements and finally failing.
2016-06-27 09:20:35 +0300 Sebastian Dröge <>
* gst/flv/gstflvdemux.c:
flvdemux: Add comment about H263/MPEG4P2 being non-standard for FLV
They are however supported by ffmpeg and apparently used out there.
2016-06-24 14:48:53 +0300 Vivia Nikolaidou <>
* gst/flv/gstflvdemux.c:
flvdemux: Add support for H263 and MPEG4 part2
2016-06-21 17:10:56 -0400 Nicolas Dufresne <>
* docs/plugins/
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* docs/plugins/gst-plugins-good-plugins.args:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
Update plugins doc
This is partly automated using "make update" in docs/plugins, but also
required manual merge. Additionally, missing plugins and elements have
been added.
2016-06-21 17:51:38 +0100 Tim-Philipp Müller <>
* tests/check/elements/splitmux.c:
tests: splitmux: skip tests if theora or ogg plugins are not available
2016-06-21 11:46:13 -0400 Nicolas Dufresne <>
* common:
Automatic update of common submodule
From ac2f647 to f363b32
2016-06-21 07:40:42 -0400 Aaron Boxer <>
* gst/rtp/gstrtpj2kpay.c:
gstrtpj2kpay: use tile bit and tile number to determine if there are multiple tiles in packet
Now we don't have to rely on a special value for the tile number.
2016-06-21 09:34:56 +0100 Tim-Philipp Müller <>
* gst/rtp/gstrtpj2kpay.c:
rtpj2kpay: fix compiler warning on OS/X
gstrtpj2kpay.c:364:21: error: implicit truncation from 'int' to bitfield changes value from -1 to 65535
2016-06-21 09:34:37 +0100 Tim-Philipp Müller <>
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/gst-plugins-good-plugins.interfaces:
* docs/plugins/gst-plugins-good-plugins.prerequisites:
* docs/plugins/inspect/plugin-avi.xml:
* docs/plugins/inspect/plugin-deinterlace.xml:
* docs/plugins/inspect/plugin-rtp.xml:
docs: update
2016-05-16 17:31:58 +0200 Guillaume Desmottes <>
* tests/check/elements/capssetter.c:
* tests/check/elements/icydemux.c:
* tests/check/elements/jpegenc.c:
* tests/check/elements/level.c:
* tests/check/elements/multifile.c:
* tests/check/elements/qtmux.c:
* tests/check/elements/rtprtx.c:
* tests/check/elements/udpsrc.c:
fix buffer leaks in tests
Need to call gst_check_drop_buffers() to release the buffers exchanged
during the test.
2016-05-17 12:52:43 +0300 Guillaume Desmottes <>
* tests/check/elements/interleave.c:
interleave: fix message leaks in test
Flush the bus when cleaning up so pending messages are destroyed.
2016-05-17 12:58:06 +0300 Guillaume Desmottes <>
* tests/check/elements/videomixer.c:
videomixer: fix event leaks in test
2016-05-13 15:12:22 +0200 Guillaume Desmottes <>
* tests/check/elements/deinterleave.c:
deinterleave: fix leaks
- Flush the bus so messages aren't leaked
- Fix pad leak
2016-06-17 15:29:16 +0300 Sebastian Dröge <>
* gst/rtp/gstrtph264pay.c:
rtph264pay: Deprecated sprop-parameter-set property
This is supposed to be either in the codec_data (avc stream format) or inside
the stream, and we extract it from there. It should not be set from a
property as it's stream specific.
2016-06-17 12:16:32 -0700 Aleix Conchillo Flaqué <>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: make all srtp encoder properties explicit
The Session Data Protocol doesn't allow specifying a cipher for the
SRTCP, so it will use the SRTP one. In the "srtpenc" element the cipher
"aes-128-icm" is the default for SRTP and SRTCP, but if we want to have
an SRTCP with the "aes-256-icm" cipher then we also need to set the SRTP
cipher to "aes-256-icm", otherwise "aes-128-icm" will be used instead.
2016-06-17 19:59:13 +0100 Tim-Philipp Müller <>
* ext/soup/gstsoup.c:
soup: work around frequent deadlocks in GLib type initialisation
.. by registering the types from the plugin init function. This
seems to help, but we'll see if it's enough (might need similar
things elsewhere).
2016-06-17 16:08:08 +0300 Sebastian Dröge <>
* gst/isomp4/gstqtmux.c:
qtmux: The prores variant is stored in the variant field, not format
And the caps in the sink pad template already used variant (only).
2016-06-17 13:00:48 +0200 Jonas Holmberg <>
* gst/rtp/gstrtph265pay.c:
* gst/rtp/gstrtph265pay.h:
rtph265pay: Remove sprop-parameter-sets property
There is no valid use case when this property is needed since the values
must be in either codec_data or buffer data.
2016-06-10 16:17:26 +0200 Jonas Holmberg <>
* docs/plugins/scanobj-build.stamp:
* gst/rtp/gstrtph265pay.c:
rtph265pay: Read NALU type the same way everywhere
Cosmetic change to read NALU type in gst_rtp_h265_pay_decode_nal() the
same way as in other places.
2016-06-17 13:58:33 +0200 Aurélien Zanelli <>
* gst/rtpmanager/rtpjitterbuffer.h:
rtpjitterbuffer: fix RTPJitterBufferMode documentation
Documentation lacks '@' before each enum values and there was an extra
line after symbol section which confuses GTK-Doc parser.
2016-05-23 10:18:48 +0200 Miguel París Díaz <>
* gst/rtpmanager/rtpsession.c:
rtpsession: take the lock when changing stats
2016-06-15 11:19:43 +0200 Jürgen Slowack <>
* gst/rtp/gstrtph265pay.c:
rtph265: fix NAL unit type parsing and SPS/PPS/VPS detection
Fixes sps/pps/vps insertion via the config-interval property.
2016-06-11 12:16:03 +0300 Sebastian Dröge <>
* tests/check/pipelines/simple-launch-lines.c:
simple-launch-lines: Use correct JPEG2000 caps
2016-06-10 13:43:09 +0100 Tim-Philipp Müller <>
* gst/flv/gstflvdemux.c:
flvdemux: fix indentation
2016-06-10 13:42:01 +0100 Tim-Philipp Müller <>
* gst/flv/gstflvdemux.c:
flvdemux: fix date parsing when there are trailing spaces
Fixes parsing of "Thu May 11 15:57:46 2006 ".
2016-05-13 15:08:24 -0400 Aaron Boxer <>
* gst/rtp/gstrtpj2kcommon.h:
* gst/rtp/gstrtpj2kdepay.c:
* gst/rtp/gstrtpj2kpay.c:
gstrtpj2k: set sampling field required by RFC
This field is now required in the sink caps.
2016-06-09 09:30:48 +0900 Seungha Yang <>
* gst/flv/gstflvdemux.c:
flvdemux: Fix unref assertion failure
Fix unref assertion failure
2016-05-14 14:46:17 +0200 Olivier Crête <>
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpjitterbuffer: Work with non-TIME segments
With non-time segments, it now assumes that the arrival time of packets
is not relevant and that only the RTP timestamp matter and it produces
an output segment start at running time 0.
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.
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.
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.
2016-06-07 16:41:58 -0400 Nicolas Dufresne <>
* sys/v4l2/gstv4l2videodec.c:
v4l2videodec: Coding style fixes
2016-06-07 16:09:23 -0400 Nicolas Dufresne <>
* sys/v4l2/gstv4l2object.c:
v4l2object: Coding style fixes
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.
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.
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).
2016-04-28 13:44:49 +0200 Edward Hervey <>
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: Show state name in debugging
Makes it easier to trace what's going on
2016-05-10 15:45:42 +0200 Edward Hervey <>
* gst/isomp4/qtdemux.c:
qtdemux: Remove useless variable
That variable is only needed for a debug statement, move it there
2016-05-10 15:10:36 +0200 Edward Hervey <>
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: Add/Fix comments on the various structure variables
No variables were added/removed. This was just a good excuse to:
* Comment what most variables are used for (and when)
* Order them in such a way as to show first the common variables used
in all cases, followed by those only used in push-mode
2016-05-10 15:07:40 +0200 Edward Hervey <>
* gst/isomp4/qtdemux.c:
qtdemux: Remove unused structure
Let's just remove it, been commented for 7+ years :)
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.
2014-12-12 14:31:36 +0100 Peter Seiderer <>
* sys/v4l2/gstv4l2videodec.c:
v4l2videodec: add gst_v4l2_decoder_cmd helper
2016-06-01 20:28:39 +0300 Sebastian Dröge <>
* gst/isomp4/qtdemux.c:
qtdemux: Forward segments directly if we are operating in PUSH mode on fragmented streams
We shouldn't go through segment activation as we will only have a limited
understanding of how the whole stream timeline looks like from the moof. We
only know about the current fragment, while upstream knows about the whole
This fixes seeking in DASH streams, both for seeks after the current moof and
for seeks into the current moof. The former would fail because the moof ends
and we can't activate any segment, the latter would cause a segment that stops
at the moof end, and no further fragments would be played because we end up
being EOS.
2016-06-06 17:54:10 -0400 Nicolas Dufresne <>
* sys/v4l2/gstv4l2transform.c:
v4l2transform: Use looser caps for upstream
When we fixate for upstream, try to not introduce new fields when not
needed. This was imported from videoconvert element.
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
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.
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.
2016-05-13 16:39:25 +0200 Philipp Zabel <>
* sys/v4l2/gstv4l2object.c:
v4l2object: fill colorimetry in gst_v4l2_object_acquire_format
Instead of relying on the default colorimetry chosen by
gst_video_info_set_format(), set info.colorimetry from the
values returned by G_FMT. This allows decoders to propagate
their input colorimetry downstream.
2016-05-18 10:17:12 +0200 Philipp Zabel <>
* sys/v4l2/gstv4l2object.c:
v4l2object: refactor gst_v4l2_object_get_colorspace to take a v4l2_format parameter
Move the extraction of colorimetry parameters from struct v4l2_format and the
setting of the identity matrix for RGB formats into the function to avoid code
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.
2016-05-13 14:45:02 +0200 Philipp Zabel <>
* sys/v4l2/gstv4l2object.c:
v4l2object: use G_SELECTION instead of G_CROP in gst_v4l2_object_acquire_format
The gst_v4l2_object_acquire_format() function is used by v4l2videodec to obtain
the currently set capture format. Since G_FMT returns the coded size, the
visible size needs to be obtained from the compose rectangle in order to
negotiate it with downstream elements. The G_CROP call hasn't worked on mem2mem
capture queues for a long time. Instead use the G_SELECTION call to obtain the
compose rectangle and only fall back to G_CROP for ancient kernels.
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
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.
2016-05-04 14:50:32 +0200 Michael Olbrich <>
* gst/matroska/matroska-demux.c:
matroskademux: preserve seek flags
Without this some flags get lost in streaming mode.
2016-06-06 10:47:52 +0300 Sebastian Dröge <>
* ext/soup/
* ext/soup/gstsouphttpclientsink.c:
* ext/soup/gstsouphttpsrc.c:
* ext/soup/gstsouphttpsrc.h:
Revert "WIP revert soup"
This reverts commit fdac3a7a231f3848665636cf8122f96103b46e3b.
Was not supposed to be pushed but a local workaround for
2016-06-03 13:09:35 +0200 Miguel París Díaz <>
* gst/rtpmanager/rtpsource.c:
rtpsource: complete warn log with SSRC
2016-05-31 15:29:13 +0300 Sebastian Dröge <>
* ext/soup/
* ext/soup/gstsouphttpclientsink.c:
* ext/soup/gstsouphttpsrc.c:
* ext/soup/gstsouphttpsrc.h:
WIP revert soup
2016-06-03 13:18:31 +0300 Sebastian Dröge <>
* ext/dv/gstdvdemux.c:
dvdemux: Unref seek event in any case
It would be leaked if no seek handler was currently set.
2016-06-03 10:49:17 +0300 Sebastian Dröge <>
* ext/dv/gstdvdemux.c:
* ext/dv/gstdvdemux.h: