Commit 1b6fdce6 authored by Sebastian Dröge's avatar Sebastian Dröge
Browse files

Release 1.7.2

parent 2b2d2d81
=== release 1.7.2 ===
2016-02-19 Sebastian Dröge <>
releasing 1.7.2
2016-02-19 10:31:48 +0200 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/mt.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/zh_HK.po:
* po/zh_TW.po:
po: Update translations
2016-02-18 18:33:13 +0100 Philippe Normand <>
* gst/isomp4/qtdemux.c:
qtdemux: plug leaks in cenc aux info parsing
2016-02-18 13:43:07 +0000 Tim-Philipp Müller <>
* tests/check/
tests: fix spurious souphttpsrc test timouts
Set GSETTINGS_BACKEND=memory, apparently there's something
about fork() and the dconf backend (or whatever else that
drags in or activates) that messes up locking and causes
timeouts due to deadlocks in g_mutex_lock(), since
everything works fine with CK_FORK=no as well.
2016-02-18 11:10:14 +0200 Sebastian Dröge <>
* gst/matroska/matroska-demux.c:
matroskademux: Unmap wavpack header buffer after creating it
Otherwise it will be mapped writable all the time and we can't read from it
2015-12-08 18:49:40 +0100 Stian Selnes <>
* tests/check/elements/rtpjitterbuffer.c:
rtpjitterbuffer: Add test for big seqnum gap handling
Make sure that the packets queued when detecting a big gap are pushed
after reset (5 consective seqnums) and not dropped.
2016-02-17 15:03:13 +0000 Tim-Philipp Müller <>
* gst/rtp/gstrtputils.h:
rtp: sprinkle some G_GNUC_INTERNAL for internal utils functions
2016-02-09 13:17:00 +0000 Alex Ashley <>
* gst/isomp4/qtdemux.c:
qtdemux: only transform protected caps once
Commit 7873bede3134b15e5066e8d14e54d1f5054d2063
( changed the
behaviour of qtdemux to call gst_qtdemux_configure_stream() for
every new moof.
When playing a protected stream, gst_qtdemux_configure_stream()
calls gst_qtdemux_configure_protected_caps(). The
gst_qtdemux_configure_protected_caps() function takes the original
media format, puts this in a field called "original-media-type"
and then changes the caps to "application/x-cenc".
The gst_qtdemux_configure_protected_caps() did not handle the case
of being called multiple times, causing it to incorrectly set the
caps. The second call was causing the caps to be set to:
application/x-cenc, original-media-type"application/x-cenc"
This commit makes gst_qtdemux_configure_protected_caps() check that
the caps have already been transformed, so that it only gets
changed once.
2016-02-17 13:26:02 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph264depay.c:
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtputils.c:
* gst/rtp/gstrtputils.h:
rtp: h264/h265: avoid duplication of read_golomb()
There is no need to have two identical implementations of the read_golomb
2016-02-17 14:37:44 +0100 Ognyan Tonchev <>
* gst/matroska/matroska-demux.c:
matroskademux: Simple implementation of TRICKMODE_KEY_UNITS
When the trickmode key-units flag is set on the segment, simply skip
any sample on a video stream that isn't a keyframe
2015-08-21 14:15:18 +0100 Tim-Philipp Müller <>
* gst/matroska/matroska-demux.c:
matroska-demux: send GAP events for lagging audio and video streams too
Send GAP events for non-subtitle streams too if they lag too much
behind, but use a higher threshold than for subtitles.
This helps with fixing prerolling with a file where one of the
audio streams only has data starting from 19s onwards. It's not
a complete fix yet, it also requires changes elsewhere, such as
in baseparse, to make sure caps are propagated.
2015-12-23 19:54:13 +0100 Stian Selnes <>
* gst/rtp/
* gst/rtp/gstrtp.c:
* gst/rtp/gstrtpvp9depay.c:
* gst/rtp/gstrtpvp9depay.h:
* gst/rtp/gstrtpvp9pay.c:
* gst/rtp/gstrtpvp9pay.h:
rtpvp9pay: rtpvp9depay: Initial implementation of draft 01
Quick and dirty implementation of an RTP payloader and depayloader
for VP9. In particalur it assumes no spatial or temporal layering,
non-flexible mode, and some other bits and pieces.
2016-02-16 09:02:30 +0900 Vineeth TM <>
* gst/avi/gstavidemux.c:
avidemux: Fix string memory leak
codec_name is not being freed in all conditions leading to memory leak
2015-12-10 12:15:52 +0100 Miguel París Díaz <>
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpbin.h:
rtpbin: add "get-session" signal
This gets the GstRTPSession element, as compared to the RTPSession object
that is returned by get-internal-session.
2016-02-16 00:19:00 +0000 Tim-Philipp Müller <>
* gst/rtp/
* gst/rtp/gstrtp.c:
rtp: h265: hook up move RTP H.265 payloader/depayloader to build
2016-02-16 00:14:27 +0000 Tim-Philipp Müller <>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
* gst/rtp/gstrtph265pay.c:
rtp: h265: use common meta utility functions
2016-02-05 18:18:31 +0000 Tim-Philipp Müller <>
* gst/rtp/gstrtph265depay.h:
* gst/rtp/gstrtph265pay.h:
* gst/rtp/gstrtph265types.h:
rtp: h265: remove codecparser dependency from h265 payloader/depayloader
Looks like it just uses the NAL enums and nothing else from
the codecparsers, and that's the only reason it had to be
moved from -good to -bad when it was originally added. We
can probably keep those NAL enums up to date enough, so let's
remove the codecparser dependency so it can be moved back into
2016-02-16 00:24:58 +0000 Tim-Philipp Müller <>
Merge branch 'plugin-move-rtp-h265'
Move RTP H.265 payloader/depayloader from -bad to -good.
2016-02-05 15:34:51 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
gstrtph265depay: keep consistency with rtph264depay
Use gst_rtp_drop_meta() and the same function prototype for
gst_rtp_copy_meta() to keep consistency with the RTP elements in
2016-02-05 13:56:34 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: fix termination of access unit
Only consider the access unit complete when the next-occurring VCL NAL unit
has the first bit after its NAL unit header equal to 1.
2016-01-15 16:10:02 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: fix unneeded sub-buffer creation
We create a sub-buffer just to copy over its metas and then throw it
away immediately, just use the original input buffer directly.
2016-01-15 15:56:59 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtph265pay: add "send VPS/SPS/PPS with every key frame" mode
It's not enough to have timeout or event based VPS/SPS/PPS information
sent in RTP packets. There are some scenarios when key frames may appear
more frequently than once a second, in which case the minimum timeout
for "config-interval" of 1 second for sending VPS/SPS/PPS isn't enough.
It might also be desirable in general to make sure the VPS/SPS/PPS is
available with every keyframe (packet loss aside), so receivers can
actually pick up decoding immediately from the first keyframe if
VPS/SPS/PPS is not signaled out of band.
This commit adds the possibility to send VPS/SPS/PPS with every key frame.
This mode can be enabled by setting "config-interval" property to -1. In
this case the payloader will add VPS, SPS and PPS before every key (IDR)
2016-01-15 15:19:41 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
* gst/rtp/gstrtph265pay.h:
rtph265pay: change config-interval property type from uint to int
This way we can use -1 as special value, which is nicer than MAXUINT.
2015-08-15 16:22:20 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: make sure we call handle_nal for each NAL
Call handle_nal for each NAL in the STAP-A RTP packet. This makes sure
we correctly extract the SPS and PPS.
2015-08-15 14:45:34 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtph265pay: Copy metadata in the payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.
2015-08-15 11:41:40 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtph265pay: Use GST_WARNING_OBJECT() instead of GST_WARNING()
2015-08-15 11:30:36 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtph265pay: fix potential crash when shutting down
A race condition in the state change function may cause buffers to be
unreffed while they are still used by the streaming thread in
gst_rtp_h265_pay_send_vps_sps_pps() resulting in a crash. Chain up to the
parent class first in the state change function to make sure streaming
has stopped and only then free those buffers.
2015-08-14 15:08:08 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtph265pay: fix buffer leak when using SPS/PPS
Fixes a buffer leak that would occur if the pipeline was shutdown while a
SPS/PPS header was being created.
2015-08-14 11:49:51 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
rtph265depay: copy metadata in the depayloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.
2015-08-12 17:54:52 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: checking if depay has sps/pps nals before insertion
Related to:
2015-08-12 17:22:42 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: only update the srcpad caps if something else than the codec_data changed
h264parse and gstrtph264depay do the same, let's keep the behaviour
consistent. As we now include the codec_data inside the stream, this causes
less caps renegotiation.
2015-08-12 16:43:48 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: PPS replaces old PPS if it has the same id
2015-08-12 16:11:00 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: Insert SPS/PPS NALs into the stream
rtph264depay does the same and this fixes decoding of some streams with 32
SPS (or 256 PPS). It is allowed to have SPS ID 0 to 31 (or PPS ID 0 to 255),
but the field in the codec_data for the number of SPS or PPS is only 5
(or 8) bit. As such, 32 SPS (or 256 PPS) are interpreted as 0 everywhere.
This looks like a mistake in the part of the spect about the codec_data.
2015-08-12 15:49:50 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: implement process_rtp_packet() vfunc
For more optimised RTP packet handling: means we don't need to map the
input buffer again but can just re-use the mapping the base class has
already done.
Based on:
2015-08-12 15:14:50 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
Switching to GST_BUFFER_TIMESTAMP() to be consistent with other rtp code.
2015-08-12 14:59:53 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtph265depay: prevent trying to get 0 bytes from adapter
This causes an assertion and would lead to getting a NULL instead
of a buffer. Without proper checking this would easily lead to a
Related to rpth264depay:
2015-07-29 17:29:28 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtp: remove dead assignment
Value set to ret will be overwritten at least once at the end of the while
loop, removing assignment.
2015-04-24 16:48:23 +0100 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
2015-03-06 14:54:41 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtp: donl_present variable unused
donl_present is not implemented, yet the value is set and checked a few times.
Cleaning this.
CID #1249687
2015-01-08 15:36:04 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265pay.c:
rtp: value truncated too short creates dead code
type is truncated to 0-31 with "& 0x1f", but right after that it is checks if
the value is equivalent to GST_H265_NAL_VPS, GST_H265_NAL_SPS, and
GST_H265_NAL_PPS (which are 32, 33, and 34 respectively). Obviously, this will
never be True if the value is maximum 31 after the truncation.
The intention of the code was to truncate to 0-63.
2015-01-08 15:27:44 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtp: fix nal unit type check
After further investigation the previous commit is wrong. The code intended to
check if the type is 39 or the ranges 41-44 and 48-55. Just like gsth265parse.c
does. Type 40 would not be complete.
2015-01-08 13:47:09 +0000 Luis de Bethencourt <>
* gst/rtp/gstrtph265depay.c:
rtp: fix dead code and check for impossible values
nal_type is the index for a GstH265NalUnitType enum. There are two types of dead
code here:
First, after checking if nal_type is >= 39 there are two OR conditionals that
check if the value is in ranges higher than that number, so if nal_type >= 39
falls in the True branch those other conditions aren't checked and if it falls
in the False branch and they are checked, they will always also be False. They
are redundant.
Second, the enum has a range of 0 to 40. So the checks for ranges higher than 41
should never be True.
Removing this redundant checks.
CID 1249684
2014-10-16 10:34:01 +0200 Thijs Vermeir <>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
* gst/rtp/gstrtph265pay.c:
* gst/rtp/gstrtph265pay.h:
rtp: add h265 RTP payloader + depayloader
2016-02-15 11:51:46 +0900 Vineeth TM <>
* tests/check/elements/rtpmux.c:
tests: rtpmux: Fix element memory leak
2016-02-12 20:57:29 +0100 Stefan Sauer <>
* gst/monoscope/monoscope.c:
monoscope: rework the scaling code
The running average was wrong and the resulting scaling factor was only held in
place using the CLAMP. In addtion we are now convering quickly to volume
FInally now with this change, we can change the resolution defines and
everythign adjusts.
2016-01-28 17:00:55 +0100 Stefan Sauer <>
* gst/monoscope/convolve.c:
* gst/monoscope/monoscope.c:
* gst/monoscope/monoscope.h:
monoscope: use constants in the drawing code
Make all the drawing ops be based on the constants. This way we can change
the fixed size at least at compile time.
2016-01-28 09:51:17 +0100 Stefan Sauer <>
* gst/monoscope/gstmonoscope.c:
monoscope: replace hardcoded values by constants
This at least establishes the relationship.
2016-01-28 09:43:12 +0100 Stefan Sauer <>
* gst/monoscope/convolve.c:
* gst/monoscope/convolve.h:
* gst/monoscope/monoscope.c:
* gst/monoscope/monoscope.h:
monoscpe: make the convolver use dynamic memory
Replace all #defines with members and initialize the convolver with a parameter.
2016-01-28 08:56:44 +0100 Stefan Sauer <>
* gst/monoscope/README:
monoscope: update README
We can already create multiple instances.
2016-01-28 08:53:35 +0100 Stefan Sauer <>
* gst/monoscope/convolve.c:
* gst/monoscope/monoscope.c:
monoscope: code cleanup
Use constants more often. Cleanup comments and add more to explain how things
2016-02-08 23:41:32 +0000 Luis de Bethencourt <>
* gst/deinterlace/gstdeinterlace.c:
deinterlace: remove check for impossible condition
Commit bd27a1f30b4458f2edee53c76dd07fb35904b61d added a few error handling
memory management checks. These check srccaps to see if it needs to be
unreferenced before returning, in the case of invalid_caps this goto jump
always happens before srccaps is set, so it will always be NULL in this
error label.
CID #1352035
2016-02-08 12:48:46 +0100 Piotr Drąg <>
* po/
po: update POTFILES
2016-02-08 15:31:55 +0000 Luis de Bethencourt <>
* sys/v4l2/gstv4l2allocator.c:
v4l2allocator: Fix spelling of reenqueueing
To match commit 7d7074cef0272cd5155098bfc2bda6849dd89267. I love the idea
of aiming for the maximum number of consecutive vowels.
2016-02-08 10:17:49 -0500 Nicolas Dufresne <>
* sys/v4l2/gstv4l2allocator.c:
v4l2allocator: Fix spelling of queueing
Didn't know which one to choose between queuing and queueing, so I picked
the one with the biggest amount of vowels in a row ;-P (both are
acceptable apparently)
2016-02-07 15:02:35 -0500 Nicolas Dufresne <>
* ext/jpeg/gstjpegdec.c:
jpegdec: Don't pass the same data over and over
We already pass the entire frame to the decoder. If the decoder ask for
more data, don't pass the same data again as this leads to infinit loop.
Instead, simply fail the fill function to signal the problem with that
frame. It will then be skipped properly.
2016-02-08 00:10:33 +0000 Tim-Philipp Müller <>
* gst/matroska/lzo.c:
matroska: get rid of _stdint.h include
2016-02-05 20:00:57 -0300 Thiago Santos <>
* tests/check/
tests: extend the AM_TESTS_ENVIRONMENT from check.mak
To get the CK_DEFAULT_TIMEOUT defined for all tests
2016-02-05 18:04:31 -0300 Thiago Santos <>
* common:
Automatic update of common submodule
From 86e4663 to b64f03f
2016-01-30 18:43:30 +0100 Sebastian Dröge <>
* gst/rtp/gstrtpjpegpay.c:
rtpjpegpay: Skip APP and JPG markers and print warnings for unknown markers
For APP/JPG markers the size is following and we have to skip that. This is
not really a problem unless the marker contains e.g. a preview JPEG or
something else that we might interprete as another marker.
2016-01-26 22:37:30 +0900 Seungha Yang <>
* gst/isomp4/qtdemux.c:
qtdemux: fix framerate calculation for fragmented format
qtdemux calculates framerate using duration and the number of sample.
In case of fragmented mp4 format, however, the number of sample can
be figure out after parsing every moof box. Because qtdemux does not
parse every moof in QTDEMUX_STATE_HEADER state, it will cause incorrect
framerate calculation.
This patch will triger gst_qtdemux_configure_stream() for every new moof.
Then, framerate will be calculated by using duration and n_samples of the moof.
2016-01-28 22:36:23 +0900 Seungha Yang <>
* gst/isomp4/qtdemux.c:
qtdemux: handling zero segment-duration edit list
Based on document ISO_IEC_14496-12, edit list box can have
segment duration as zero. It does not imply that media_start equals to
media_stop. But, it just indicates a sample which should be presented
at the first. This patch derives segment duration using media_time
and duration of file. And set derived duration to segment-duration.
2016-01-28 21:36:54 +0900 Seungha Yang <>
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: expose streams with first moof for fragmented format
In case of push mode, qtdemux expose streams after got moov box.
We can not guarantee that a moov box has sample data such as sample duration
and the number of sample in stbl box for fragmented format case.
So, if a moov has no sample data, streams will not be exposed until get the first moof.
2016-01-27 18:48:17 +0100 Sebastian Dröge <>
* gst/deinterlace/gstdeinterlace.c:
deinterlace: Check for subset instead of non-empty intersection for ACCEPT_CAPS
2016-01-27 18:44:23 +0100 Sebastian Dröge <>
* gst/deinterlace/gstdeinterlace.c:
deinterlace: Unset RECONFIGURE flag on srcpad whenever we configure new caps
Prevents double-negotiation during startup and in some other cases.
2016-01-27 16:43:22 +0100 Sebastian Dröge <>
* tests/check/elements/deinterlace.c:
deinterlace: Add negotiation unit tests for all 4 modes
These now check the output caps based on the input caps and a following
capsfilter and make sure the caps are exactly as expected.
2016-01-26 17:39:20 +0100 Vivia Nikolaidou <>
* gst/deinterlace/gstdeinterlace.c:
deinterlace: Do passthrough in auto mode if downstream only supports interlaced
If the following conditions are met:
1) upstream and downstream caps are compatible
2) upstream is interlaced
3) downstream doesn't support progressive mode
then deinterlace will just do passthrough instead of failing to link.
This is done with the following scenario in mind:
videotestsrc ! "video/x-raw,interlace-mode=interleaved" ! deinterlace
name=dein_src ! tee name=t ! queue ! deinterlace name=dein_file ! filesink t. !
queue ! deinterlace name=dein_desktop ! autovideosink
In this case, dein_src will do the deinterlacing. However,
videotestsrc ! "video/x-raw,interlace-mode=interleaved" ! deinterlace
name=dein_src ! tee name=t ! queue ! deinterlace name=dein_file ! filesink t. !
queue ! deinterlace name=dein_desktop ! autovideosink t. ! queue !
"video/x-raw,interlace-mode=interleaved" ! fakesink
In this case, caps auto-negotiation will make dein_file and dein_desktop do
the deinterlacing, while dein_src will be passthrough.
2016-01-26 18:05:51 +0100 Sebastian Dröge <>
* gst/deinterlace/gstdeinterlace.c:
* gst/deinterlace/gstdeinterlace.h:
deinterlace: Add mode=auto-strict
In this mode we will passthrough all progressive caps but interlaced caps must be
caps where we actually support deinterlacing.
This is the only difference between auto and auto-strict, auto would
passthrough all unsupported interlaced caps.
2016-01-26 17:50:30 +0100 Sebastian Dröge <>