platform/upstream/gst-plugins-good.git
8 years agoqtdemux: dismember activate_segment into 2 parts
Thiago Santos [Wed, 4 May 2016 14:37:29 +0000 (11:37 -0300)]
qtdemux: dismember activate_segment into 2 parts

One that updates and push a new segment, the other will move the
stream to the new segment starting position

8 years agodv: Use correct pixel-aspect-ratio values
Sebastian Dröge [Wed, 4 May 2016 06:30:27 +0000 (09:30 +0300)]
dv: Use correct pixel-aspect-ratio values

The previous ones resulted in odd display aspect ratios and were different
from the ones used by e.g. ffmpeg. The new ones now result in display aspect
ratios of 4:3 and 16:9.

https://bugzilla.gnome.org/show_bug.cgi?id=765946

8 years agotests: add splitmuxsrc test for new "format-location" signal
George Kiagiadakis [Mon, 9 Nov 2015 16:55:09 +0000 (17:55 +0100)]
tests: add splitmuxsrc test for new "format-location" signal

https://bugzilla.gnome.org/show_bug.cgi?id=753625

8 years agosplitmuxsrc: add a format-location signal that allows bypassing the location property
George Kiagiadakis [Mon, 9 Nov 2015 16:51:12 +0000 (17:51 +0100)]
splitmuxsrc: add a format-location signal that allows bypassing the location property

This signal allows a user to directly return a sorted list of
files to be joined, so that they don't have to follow the
filename pattern that the "location" property expects.

https://bugzilla.gnome.org/show_bug.cgi?id=753625

8 years agosplitmuxsink: Fix deadlock case when source reaches EOS
Xavier Claessens [Wed, 4 May 2016 15:15:20 +0000 (11:15 -0400)]
splitmuxsink: Fix deadlock case when source reaches EOS

https://bugzilla.gnome.org/show_bug.cgi?id=765072

8 years agowavparse: simplify and correct header scanning
Stefan Sauer [Wed, 4 May 2016 05:59:27 +0000 (22:59 -0700)]
wavparse: simplify and correct header scanning

The wav spec tells that 'fmt' (and 'bext' if present) must come before 'data'.
There is no requirement for 'fmt' to be first. We already had a list of chunks
to skip, but it is easier to just skip any chunk while seeking for 'fmt'.

This fixes reading files generated by ProTools.

8 years agoosxaudio: Support audio device provider on osx
Hyunjun Ko [Sat, 30 Apr 2016 13:15:13 +0000 (22:15 +0900)]
osxaudio: Support audio device provider on osx

https://bugzilla.gnome.org/show_bug.cgi?id=753265

8 years agoavimux: set audio header rate according to calculated bps in stop_file
Mark Nauwelaerts [Sun, 1 May 2016 13:09:27 +0000 (15:09 +0200)]
avimux: set audio header rate according to calculated bps in stop_file

... now that set_fields is no longer called there by
e538608b3f90539003de21c1db238f3c9b946e30

8 years agoqtdemux: Store the segment sequence number in the EOS events and SEGMENT_DONE events...
Sebastian Dröge [Fri, 29 Apr 2016 12:04:11 +0000 (15:04 +0300)]
qtdemux: Store the segment sequence number in the EOS events and SEGMENT_DONE events/message

Also instead of storing it per stream, store it globally in the demuxer. It's
the same for each stream anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=765806

8 years agoudpsrc: Always bind to ANY when address is a multicast address and not only on Windows
Sebastian Dröge [Mon, 11 Apr 2016 07:54:38 +0000 (10:54 +0300)]
udpsrc: Always bind to ANY when address is a multicast address and not only on Windows

For IPv6 addresses, binding to a multicast group does not work on Linux
either. Always bind to ANY and then later join the multicast group.

https://bugzilla.gnome.org/show_bug.cgi?id=764679

8 years agoximageutil: shouldn't implement transform if don't support it
Song Bing [Tue, 26 Apr 2016 09:01:49 +0000 (17:01 +0800)]
ximageutil: shouldn't implement transform if don't support it

shouldn't implement transform if don't support it. Or gst_buffer_copy_into()
will print ERROR log.

https://bugzilla.gnome.org/show_bug.cgi?id=765583

8 years agoqtmux: Allow MPEG-1 Layer 1 and 2 in addition to 3 in MP4
Sebastian Dröge [Thu, 28 Apr 2016 13:24:52 +0000 (16:24 +0300)]
qtmux: Allow MPEG-1 Layer 1 and 2 in addition to 3 in MP4

Via the MPEG-4 Part 3 spec we can support the other layers too.
Also correct the samples per frame calculation for MP3 if it's MPEG-2 or
MPEG-2.5.

https://bugzilla.gnome.org/show_bug.cgi?id=765725

8 years agortspsrc: Update caps for TCP whenever they change
Sebastian Dröge [Wed, 27 Apr 2016 17:46:34 +0000 (20:46 +0300)]
rtspsrc: Update caps for TCP whenever they change

We only changed them for UDP so far, which caused the wrong seqnum-base and
other information to be passed to rtpjitterbuffer/etc when seeking. This
usually wasn't that much of a problem as the code there is robust enough, but
every now and then it causes us to drop up to 32756 packets before we
continue doing anything meaningful.

https://bugzilla.gnome.org/show_bug.cgi?id=765689

8 years agortpjitterbuffer: Ensure to not take caps with the wrong pt for getting the clock...
Sebastian Dröge [Wed, 27 Apr 2016 17:33:38 +0000 (20:33 +0300)]
rtpjitterbuffer: Ensure to not take caps with the wrong pt for getting the clock-rate

Especially the caps on the pad might be out of date, and the new caps would be
provided for the current pt via the request-pt-map signal.

https://bugzilla.gnome.org/show_bug.cgi?id=765689

8 years agortspsrc: Don't propagate spurious state change returns from internal elements further
Sebastian Dröge [Wed, 27 Apr 2016 15:27:17 +0000 (18:27 +0300)]
rtspsrc: Don't propagate spurious state change returns from internal elements further

We handle them inside rtspsrc and override them in all other cases anyway, so
do the same for "internal" state changes like PAUSED->PAUSED and
PLAYING->PLAYING.

This keeps unexpected NO_PREROLL to confuse state changes in GstBin.

See also https://bugzilla.gnome.org/show_bug.cgi?id=760532

https://bugzilla.gnome.org/show_bug.cgi?id=765689

8 years agoavimux: Don't override maximum audio chunk size with the scale again just before...
Sebastian Dröge [Wed, 27 Apr 2016 11:09:03 +0000 (14:09 +0300)]
avimux: Don't override maximum audio chunk size with the scale again just before writing it

set_fields() should only be called in the beginning, otherwise we will never
remember the maximum audio chunk size and write a wrong block align... which
then causes wrong timestamps and other problems.

8 years agoavimux: Actually store the largest audio chunk size for the VBR case of MP2/MP3
Sebastian Dröge [Wed, 27 Apr 2016 10:53:00 +0000 (13:53 +0300)]
avimux: Actually store the largest audio chunk size for the VBR case of MP2/MP3

3ea338ce271e1f6a96d2ed49d4472b091f6f8b7e changed avimux to do that, but it
never actually kept track of the max audio chunk for MP3 and MP2. These are
knowing the hdr.scale only after parsing the frames instead of at setcaps
time.

8 years agomultiudpsink: Allow setting "socket-v6" without setting "socket" too
Mats Lindestam [Mon, 25 Apr 2016 13:03:14 +0000 (15:03 +0200)]
multiudpsink: Allow setting "socket-v6" without setting "socket" too

https://bugzilla.gnome.org/show_bug.cgi?id=764897

8 years agovpxenc: Properly handle frames with too low duration
Mario Sanchez Prada [Fri, 22 Apr 2016 14:02:16 +0000 (15:02 +0100)]
vpxenc: Properly handle frames with too low duration

When a frame's duration is too low, calling gst_util_uint64_scale()
to scale its value can result into it being truncated to zero, which
will cause the vpx encoder to return an VPX_CODEC_INVALID_PARAM error
when trying to encode.

To prevent this from happening, we simply ignore the duration when
encoding if it becomes zero after scaling, logging a warning message.

https://bugzilla.gnome.org/show_bug.cgi?id=765391

8 years agodeinterlace: fix description of linear interlacing method
Tim-Philipp Müller [Fri, 22 Apr 2016 14:48:08 +0000 (15:48 +0100)]
deinterlace: fix description of linear interlacing method

8 years agoflv: Handle the case where we do not get any CollectData in handle_buffer
Thibault Saunier [Thu, 21 Apr 2016 17:08:19 +0000 (14:08 -0300)]
flv: Handle the case where we do not get any CollectData in handle_buffer

https://bugzilla.gnome.org/show_bug.cgi?id=765320

8 years agoqtdemux: Do not use unreliable framerate
Seungha Yang [Mon, 11 Apr 2016 13:41:20 +0000 (22:41 +0900)]
qtdemux: Do not use unreliable framerate

timescale/1 is unreliable value for framerate. Due to downstream
element usually use framerate generated by qtdemux, let it be omitted
until the framerate can be reliably calculated.

https://bugzilla.gnome.org/show_bug.cgi?id=764733

8 years agoRevert "qtdemux: expose streams with first moof for fragmented format"
Sebastian Dröge [Thu, 21 Apr 2016 09:53:33 +0000 (12:53 +0300)]
Revert "qtdemux: expose streams with first moof for fragmented format"

This reverts commit d8bb6687ea251570c331038279a43d448167d6ad.

https://bugzilla.gnome.org/show_bug.cgi?id=764733

8 years agoqtdemux: support seeking of CENC encrypted streams
Alex Ashley [Tue, 9 Feb 2016 17:17:09 +0000 (17:17 +0000)]
qtdemux: support seeking of CENC encrypted streams

When playing a stream that has been protected by DASH CENC, playback
will fail if a seek is performed. Qtdemux produces the error "stream
is protected using cenc, but no cenc protection system information
has been found" and playback stops.

The problem is that gst_qtdemux_reset() gets called as part of the
FLUSH during a seek. This function frees the protection_system_ids
array. When gst_qtdemux_configure_protected_caps() is called after the
seek has completed, the protection_system_ids array is empty and
qtdemux is unable to create the correct output caps for the protected
stream.

This commit changes it to only free the protection_system_ids on
hard resets.

https://bugzilla.gnome.org/show_bug.cgi?id=761787

8 years agoudpsrc: add "retrieve-sender-address" property
Tim-Philipp Müller [Mon, 18 Apr 2016 13:33:10 +0000 (14:33 +0100)]
udpsrc: add "retrieve-sender-address" property

This allows disabling of sender address retrieval, which might
be useful in certain scenarios, like when the socket is connected,
or the sender address is not of interest (e.g. when receiving an
MPEG-TS stream). Disabling sender address retrieval in those
cases can have minor performance advantages.

https://bugzilla.gnome.org/show_bug.cgi?id=563323

8 years agov4l2: Change warning handling to break infinite message loop
Dimitrios Katsaros [Thu, 26 Nov 2015 12:15:06 +0000 (13:15 +0100)]
v4l2: Change warning handling to break infinite message loop

v4l2src can cause an "infinite message loop" when a base control exposed as a
property is not provided by the device. In these cases, if in the warning message
handling for the bus, the GST_DEBUG_BIN_TO_DOT_FILE* category of functions are used,
the src lookup causes a new warning to be posted on the bus, causing a loop.

This patch changes the warning for these controls so they are not posted on the bus.

https://bugzilla.gnome.org/show_bug.cgi?id=758703

8 years agospitmuxsink: Avoid creating small file at EOS
Xavier Claessens [Fri, 15 Apr 2016 14:44:02 +0000 (10:44 -0400)]
spitmuxsink: Avoid creating small file at EOS

When EOS is reached, the current file get closed and the last
GOP in the mq was written in a new file.

https://bugzilla.gnome.org/show_bug.cgi?id=765072

8 years agoscaletempo: S16 uses S32 temporary buffers, float/double their own type
Sebastian Dröge [Fri, 15 Apr 2016 16:59:15 +0000 (19:59 +0300)]
scaletempo: S16 uses S32 temporary buffers, float/double their own type

Make sure to allocate not only a S16 buffer for S16 but a twice as big one to
hold S32.

https://bugzilla.gnome.org/show_bug.cgi?id=765116

8 years agoRevert "pulsesink: uncork if needed upon commit"
Jan Schmidt [Fri, 15 Apr 2016 16:17:26 +0000 (02:17 +1000)]
Revert "pulsesink: uncork if needed upon commit"

This reverts commit 0dd46accf6d282ff07065852bd91c85c78af3394.

With some audiosinks, starting the ringbuffer on the first commit
causes audio glitches at startup by starting to output segments
from the ringbuffer before it has been filled / fully prerolled. This
doesn't usually happen with pulsesink because we map the pulseaudio
ringbuffer directly, but we should keep things consistent with
other sinks with regards to startup latency, plus it gives more
headway to avoid glitching, should the initial 2nd segment take
more than 10ms to generate.

https://bugzilla.gnome.org/show_bug.cgi?id=657076

8 years agortspsrc: add srtp rollover counters from mikey crypto sessions
Aleix Conchillo Flaqué [Fri, 15 Apr 2016 07:46:56 +0000 (00:46 -0700)]
rtspsrc: add srtp rollover counters from mikey crypto sessions

The server can send multiple crypto sessions, one for each SSRC with its
own rollover counter. We parse this information and pass it to the SRTP
decoder via the "request-key" signal.

https://bugzilla.gnome.org/show_bug.cgi?id=730540

8 years agortpjitterbuffer: Fix debug output when resyncing
Jan Schmidt [Fri, 15 Apr 2016 14:35:07 +0000 (14:35 +0000)]
rtpjitterbuffer: Fix debug output when resyncing

Don't output the pointer value of the time() function as a timestamp
by using the correct variable.

Fixes build on Raspberry Pi 3.

8 years agosouphttpclientsink: If no proxy is set by properties, use the default libsoup proxy...
Sebastian Dröge [Fri, 15 Apr 2016 08:36:36 +0000 (11:36 +0300)]
souphttpclientsink: If no proxy is set by properties, use the default libsoup proxy resolver

That is, use whatever system settings there might exist. This is the same
behaviour we use in the HTTP source.

8 years agoAutomatic update of common submodule
Julien Isorce [Thu, 14 Apr 2016 09:01:28 +0000 (10:01 +0100)]
Automatic update of common submodule

From 6f2d209 to ac2f647

8 years agosplitmuxsink: Add max_files_number property
Damian Ziobro [Wed, 13 Apr 2016 17:45:07 +0000 (18:45 +0100)]
splitmuxsink: Add max_files_number property

https://bugzilla.gnome.org/show_bug.cgi?id=744612

8 years agovideomixer: drop reference to videomixer 2
Reynaldo H. Verdejo Pinochet [Wed, 13 Apr 2016 17:57:03 +0000 (10:57 -0700)]
videomixer: drop reference to videomixer 2

Fix a small grammar mistake on "overlayed" while at it.

8 years agoximage: Initialize all fields in the meta explicitly
Sebastian Dröge [Wed, 13 Apr 2016 06:57:16 +0000 (09:57 +0300)]
ximage: Initialize all fields in the meta explicitly

The meta is not allocated with all fields initialized to zeroes.

https://bugzilla.gnome.org/show_bug.cgi?id=764902

8 years agortpmux: Forward sticky events on buffer lists too, not only on buffers
Paolo Pettinato [Tue, 12 Apr 2016 09:41:00 +0000 (09:41 +0000)]
rtpmux: Forward sticky events on buffer lists too, not only on buffers

https://bugzilla.gnome.org/show_bug.cgi?id=764933

8 years agodeinterlace: Drain the field history if the caps are changing
Sebastian Dröge [Tue, 12 Apr 2016 12:01:28 +0000 (15:01 +0300)]
deinterlace: Drain the field history if the caps are changing

Otherwise we will use fields from the old caps with everything set up for the
new caps, causing crashes and worse.

Also don't do anything if the same caps are set twice.

8 years agodeinterlace: Instead of confusing crashes later, just error out immediately if mappin...
Sebastian Dröge [Tue, 12 Apr 2016 12:00:31 +0000 (15:00 +0300)]
deinterlace: Instead of confusing crashes later, just error out immediately if mapping a video frame fails

This probably still crashes but at least we get some hint about what goes
wrong instead of random behaviour later.

8 years agoqtdemux: check stream is available in PIFF parser
Luis de Bethencourt [Tue, 12 Apr 2016 10:38:51 +0000 (11:38 +0100)]
qtdemux: check stream is available in PIFF parser

qtdemux->streams is an array, it will never evaluate to true when comparing
to NULL. Instead we want to check the number of streams to make sure the
stream is available.

https://bugzilla.gnome.org/show_bug.cgi?id=753614
CID 1358389

8 years agoRevert "qtdemux: redundant check in PIFF parser"
Luis de Bethencourt [Tue, 12 Apr 2016 10:37:36 +0000 (11:37 +0100)]
Revert "qtdemux: redundant check in PIFF parser"

This reverts commit 41e10524f3babdd92aac8c8c9d5b9cdf184c2d4e.

8 years agoqtdemux: redundant check in PIFF parser
Luis de Bethencourt [Tue, 12 Apr 2016 10:05:50 +0000 (11:05 +0100)]
qtdemux: redundant check in PIFF parser

qtdemux->streams is an array of size GST_QTDEMUX_MAX_STREAMS, it will never
evaluate to true when comparing to NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=753614
CID 1358389

8 years agov4l2: avoid leaking GValues
Wim Taymans [Tue, 12 Apr 2016 09:56:08 +0000 (11:56 +0200)]
v4l2: avoid leaking GValues

unset the GValue if we don't use it any more to avoid leaks.

8 years agortpjitterbuffer: Fix rtp_jitter_buffer_get_ts_diff() fill level calculation
Sebastian Dröge [Tue, 12 Apr 2016 07:15:39 +0000 (10:15 +0300)]
rtpjitterbuffer: Fix rtp_jitter_buffer_get_ts_diff() fill level calculation

The head of the queue is the oldest packet (as in lowest seqnum), the tail is
the newest packet. To calculate the fill level, we should calculate tail-head
while considering wraparounds. Not the other way around.

Other code is already doing this in the correct order.

https://bugzilla.gnome.org/show_bug.cgi?id=764889

8 years agortpmanager: It's GST_LIBS, not GST_LIBS_LIBS
Sebastian Dröge [Mon, 11 Apr 2016 07:44:56 +0000 (10:44 +0300)]
rtpmanager: It's GST_LIBS, not GST_LIBS_LIBS

8 years agoqtdemux: Fix parsing segment duration of empty edit list box
Seungha Yang [Sun, 10 Apr 2016 23:33:17 +0000 (08:33 +0900)]
qtdemux: Fix parsing segment duration of empty edit list box

For empty edit list, segment-duration in edit list box should not be
used for segment event.

https://bugzilla.gnome.org/show_bug.cgi?id=764870

8 years agomatroskamux: make timecodescale configurable
Nicola Murino [Fri, 8 Apr 2016 11:05:57 +0000 (13:05 +0200)]
matroskamux: make timecodescale configurable

In some use cases the default timecodescale will produce blocks with the same timestamp

https://bugzilla.gnome.org/show_bug.cgi?id=764769

8 years agojiterbuffer: Move assertion to the right location
Edward Hervey [Thu, 7 Apr 2016 11:01:52 +0000 (13:01 +0200)]
jiterbuffer: Move assertion to the right location

We shouldn't have "late" lost timers at that point

8 years agojitterbuffer: Speed up lost timeout handling
Edward Hervey [Wed, 2 Mar 2016 13:25:24 +0000 (14:25 +0100)]
jitterbuffer: Speed up lost timeout handling

When downstream blocks, "lost" timers are created to notify the
outgoing thread that packets are lost.

The problem is that for high packet-rate streams, we might end up with
a big list of lost timeouts (had a use-case with ~1000...).

The problem isn't so much the amount of lost timeouts to handle, but
rather the way they were handled. All timers would first be iterated,
then the one selected would be handled ... to re-iterate the list again.

All of this is being done while the jbuf lock is taken, which in some use-cases
would return in holding that lock for 10s... blocking any buffers from
being accepted in input... which would then arrive late ... which would
create plenty of lost timers ... which would cause the same issue.

In order to avoid that situation, handle the lost timers immediately when
iterating the list of pending timers. This modifies the complexity from
a quadratic to a linear complexity.

https://bugzilla.gnome.org/show_bug.cgi?id=762988

8 years agojitterbuffer: Don't create lost events if we don't need them
Edward Hervey [Wed, 2 Mar 2016 13:23:01 +0000 (14:23 +0100)]
jitterbuffer: Don't create lost events if we don't need them

When "do-lost" is set to FALSE we don't use/send the lost events.
In that case, don't create them to start with :)

https://bugzilla.gnome.org/show_bug.cgi?id=762988

8 years agojitterbuffer: Add tracing of lock usage
Edward Hervey [Wed, 2 Mar 2016 12:57:07 +0000 (13:57 +0100)]
jitterbuffer: Add tracing of lock usage

Helps with debugging lock usage

https://bugzilla.gnome.org/show_bug.cgi?id=762988

8 years agov4l2: Don't leak v4l2 objects and props on probe errors
Nirbheek Chauhan [Wed, 10 Feb 2016 14:26:59 +0000 (19:56 +0530)]
v4l2: Don't leak v4l2 objects and props on probe errors

8 years agotests: add unit test for jpeg depayloader packet loss handling
Tim-Philipp Müller [Mon, 4 Apr 2016 16:42:03 +0000 (17:42 +0100)]
tests: add unit test for jpeg depayloader packet loss handling

Make sure it always outputs something that looks like a valid
JPEG frame, ie. starts with an SOI marker and ends with an EOI
marker.

8 years agortpjpegdepay: Don't send invalid frames downstream after packet loss or a DISCONT
Nirbheek Chauhan [Mon, 14 Mar 2016 21:55:26 +0000 (03:25 +0530)]
rtpjpegdepay: Don't send invalid frames downstream after packet loss or a DISCONT

After clearing the adapter due to a DISCONT, as might happen when some packet(s)
have been lost, the depayloader was pushing data into the adapter (which had no
header due to the clear), creating a headerless frame out of it, and sending it
downstream. The downstream decoder would then usually ignore it; unless there
were lots of DISCONTs from the jitterbuffer in which case the decoder would reach
its max_errors limit and throw an element error. Now we just discard that data.

It is probaby not worth trying to salvage this data because non-progressive
jpeg does not degrade gracefully and makes the video unwatchable even with
low packet loss such as 3-5%.

8 years agortpjitterbuffer: Add RFC7273 media clock handling
Sebastian Dröge [Tue, 5 Jan 2016 14:15:16 +0000 (16:15 +0200)]
rtpjitterbuffer: Add RFC7273 media clock handling

https://bugzilla.gnome.org/show_bug.cgi?id=762259

8 years agoqtdemux: PIFF box detection and parsing support
Philippe Normand [Fri, 10 Jul 2015 07:44:15 +0000 (09:44 +0200)]
qtdemux: PIFF box detection and parsing support

The PIFF data is stored in a custom UUID box which is parsed and the
crypto_info of the element is updated accordingly. This allows
downstream decryptors to process and decrypt the protected content.

https://bugzilla.gnome.org/show_bug.cgi?id=753614

8 years agortpvorbisdepay: remove dead code
Luis de Bethencourt [Fri, 1 Apr 2016 11:15:05 +0000 (12:15 +0100)]
rtpvorbisdepay: remove dead code

payload_buffer hasn't been assigned a value before the jumps to
switch_failed or packet_short. So the value must be NULL. No need
to unmap and unref.

CID #1316476

8 years agortph263pay: fix leak
Luis de Bethencourt [Thu, 31 Mar 2016 13:57:20 +0000 (14:57 +0100)]
rtph263pay: fix leak

Free memory of current macroblock once it isn't needed so it isn't leaked
by the call of the gst_rtp_h263_pay_B_mbfinder function.
if (!(mac = gst_rtp_h263_pay_B_mbfinder (context, gob, mac, mb))) {

CID 1212156

8 years agosplitmux: Handle a hang draining out at EOS
Jan Schmidt [Wed, 30 Mar 2016 15:15:04 +0000 (02:15 +1100)]
splitmux: Handle a hang draining out at EOS

Make sure that all data is drained out when the reference pad
goes EOS. Fixes a problem where data that arrives on other
pads after the reference pad finishes can stall forever and
never pass EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=763711

8 years agosplitmuxsink: Fix occasional deadlock when ending file with subtitle
Xavier Claessens [Fri, 18 Mar 2016 19:45:01 +0000 (15:45 -0400)]
splitmuxsink: Fix occasional deadlock when ending file with subtitle

Deadlock occurs when splitting files if one stream received no buffer during
the first GOP of the next file. That can happen in that scenario for example:
 1) The first GOP of video is collected, it has a duration of 10s.
    max_in_running_time is set to 10s.
 2) Other streams catchup and we receive the first subtitle buffer at ts=0 and
    has a duration of 1min.
 3) We receive the 2nd subtitle buffer with a ts=1min. in_running_time is set to
    1min. That buffer is blocked in handle_mq_input() because
    max_in_running_time is still 10s.
 4) Since all in_running_time are now > 10s, max_out_running_time is now set to
    10s. That first GOP gets recorded into the file. The muxer pop buffers out
    of the mq, when it tries to pop a 2nd subtitle buffer it blocks because the
    GstDataQueue is empty.
 5) A 2nd GOP of video is collected and has a duration of 10s as well.
    max_in_running_time is now 20s. Since subtitle's in_running_time is already
    1min, that GOP is already complete.
 6) But let's say we overran the max file size, we thus set state to
    SPLITMUX_STATE_ENDING_FILE now. As soon as a buffer with ts > 10s (end of
    previous GOP) arrives in handle_mq_output(), EOS event is sent downstream
    instead. But since the subtitle queue is empty, that's never going to
    happen. Pipeline is now deadlocked.

To fix this situation we have to:
 - Send a dummy event through the queue to wakeup output thread.
 - Update out_running_time to at least max_out_running_time so it sends EOS.
 - Respect time order, so we set out_running_tim=max_in_running_time because
   that's bigger than previous buffer and smaller than next.

https://bugzilla.gnome.org/show_bug.cgi?id=763711

8 years agortpsession: Add new signal 'on-app-rtcp'
Stian Selnes [Tue, 17 Nov 2015 17:17:35 +0000 (18:17 +0100)]
rtpsession: Add new signal 'on-app-rtcp'

Similar to the 'on-feedback-rtcp' signal, but emitted for RTCP APP
packets.

https://bugzilla.gnome.org/show_bug.cgi?id=762217

8 years agortpmanager: Set to initial value for 'ntpns' in get_current_times()
Minjae Kim [Thu, 24 Mar 2016 06:57:11 +0000 (15:57 +0900)]
rtpmanager: Set to initial value for 'ntpns' in get_current_times()

Initialize "ntpns" variable to -1 as the OE compiler for some reason doesn't
realize that the variable is set in all code paths.

https://bugzilla.gnome.org/show_bug.cgi?id=764119

8 years agortpjpegpay: Allow different quantization tables for components 2 and 3
Sebastian Dröge [Sun, 31 Jan 2016 00:08:38 +0000 (11:08 +1100)]
rtpjpegpay: Allow different quantization tables for components 2 and 3

RFC 2435 mentions in section 4.1 that U/V use table number 1, but this seems
just like an example. Some encoders are not following that and there seems to
be no reason to reject their streams.

https://bugzilla.gnome.org/show_bug.cgi?id=761345

8 years agovpxdec: Use threads on multi-core systems
Nicolas Dufresne [Thu, 24 Mar 2016 23:23:12 +0000 (19:23 -0400)]
vpxdec: Use threads on multi-core systems

This is a redo of commit b848c1b6ffd1e508228820a013f94fb445e4777f. The
code was lost when the elements where ported to use a baseclass.

https://bugzilla.gnome.org/show_bug.cgi?id=764169

8 years agosplitmuxsink: only try to create internal sink if it doesn't exist
Thiago Santos [Tue, 1 Mar 2016 02:40:03 +0000 (23:40 -0300)]
splitmuxsink: only try to create internal sink if it doesn't exist

This allows splitmuxsink to be reused after being put to NULL.

Test included

https://bugzilla.gnome.org/show_bug.cgi?id=762893

8 years agov4l2object: probe all colorspace supported by device
Aurélien Zanelli [Thu, 1 Oct 2015 11:41:23 +0000 (13:41 +0200)]
v4l2object: probe all colorspace supported by device

A device can support more than one colorspace for a given image
dimension and pixel format. So we have to probe all the supported
colorspace and not only rely on the default one. Otherwise we could end
up with negotiation failure if the caps colorimetry field don't match
the v4l2 device default one even if the v4l2 could support such
colorimetry.

This patch enable probing if colorspace for both capture and output
device. It really makes sense for output device since the colorspace
shall be set by the application and a little less for capture device
which, at the moment, shall provide the colorspace; ie: the v4l2
specification seems to not take into account the fact that a capture
device could do colorspace conversion.

As a side effet, probing takes some times and so sligthly delay v4l2
initialization. Note that this patch only probe colorspace and not all
colorspace, matrix, transfer and range combination to avoid taking too
much time, especially with low-speed devices as full probing do 1782
ioctl.

https://bugzilla.gnome.org/show_bug.cgi?id=755937

8 years agocheck: Fix indentation
Edward Hervey [Thu, 24 Mar 2016 15:21:56 +0000 (16:21 +0100)]
check: Fix indentation

8 years agotests: Remove unused variables
Edward Hervey [Thu, 24 Mar 2016 15:20:39 +0000 (16:20 +0100)]
tests: Remove unused variables

8 years agodeinterleave: Return the current caps on the srcpads on caps queries
Sebastian Dröge [Wed, 16 Mar 2016 18:26:16 +0000 (20:26 +0200)]
deinterleave: Return the current caps on the srcpads on caps queries

It's not like we could accept any other caps here. The caps are decided by the
upstream caps event.

Also keep the filter order intact when filtering the results against the
filter caps.

https://bugzilla.gnome.org/show_bug.cgi?id=763326

8 years agoqtdemux: Fix qtdemux memory leak in src_convert function
Jimmy Ohn [Thu, 24 Mar 2016 06:14:23 +0000 (15:14 +0900)]
qtdemux: Fix qtdemux memory leak in src_convert function

If we don't find the index of the sample correctly in src_convert function,
we have to unref about the qtdemux before returning value.
So, I have modify it about instead pass qtdemux as a parameter into
src_convert function.

https://bugzilla.gnome.org/show_bug.cgi?id=763973

8 years agoqtdemux: Add check condition for fail case in get_duration function
Jimmy Ohn [Tue, 22 Mar 2016 04:15:20 +0000 (13:15 +0900)]
qtdemux: Add check condition for fail case in get_duration function

Currently, get_duration function always return the TRUE even though
it can't be set duration correctly. So, we need to add the else condition
about the fail case. Also, we already set the GST_CLOCK_TIME_NONE
in this function. So I have modify it which is related code in some
function.

https://bugzilla.gnome.org/show_bug.cgi?id=763968

8 years agoqtdemux: Modify data type of duration in handle_src_query function
Jimmy Ohn [Mon, 21 Mar 2016 01:11:23 +0000 (10:11 +0900)]
qtdemux: Modify data type of duration in handle_src_query function

Data type of duration need to modify from guint64 to GstClockTime
for consistency in handle_src_query function.

https://bugzilla.gnome.org/show_bug.cgi?id=763965

8 years agodeinterlace: Added unit tests for field=auto
Vivia Nikolaidou [Fri, 18 Mar 2016 12:40:58 +0000 (14:40 +0200)]
deinterlace: Added unit tests for field=auto

https://bugzilla.gnome.org/show_bug.cgi?id=763869

8 years agodeinterlace: Added "auto" fields mode
Vivia Nikolaidou [Thu, 17 Mar 2016 19:21:02 +0000 (21:21 +0200)]
deinterlace: Added "auto" fields mode

The "auto" fields mode will detect the upstream and downstream framerates and
will decide to deinterlace all or only top fields.

https://bugzilla.gnome.org/show_bug.cgi?id=763869

8 years agoflvdemux: don't emit pad-added until caps are ready
Havard Graff [Wed, 16 Mar 2016 19:17:55 +0000 (20:17 +0100)]
flvdemux: don't emit pad-added until caps are ready

In other words, gst_pad_get_current_caps should never return NULL
in a pad-added callback from the demuxer.

Added tests for the two special cases with AAC and H.264 where this
would happen every time.

https://bugzilla.gnome.org/show_bug.cgi?id=763780

8 years agogood: use new gst_element_class_add_static_pad_template()
Vineeth TM [Fri, 4 Mar 2016 01:30:12 +0000 (10:30 +0900)]
good: use new gst_element_class_add_static_pad_template()

https://bugzilla.gnome.org/show_bug.cgi?id=763076

8 years agoflvmux: Test to verify flvmux handles DTS with GST_CLOCK_TIME NONE
David Buchmann [Fri, 4 Mar 2016 08:42:44 +0000 (09:42 +0100)]
flvmux: Test to verify flvmux handles DTS with GST_CLOCK_TIME NONE

https://bugzilla.gnome.org/show_bug.cgi?id=762207

8 years agortspsrc: avoid potentially overflowing expression
Jihae Yi [Wed, 4 Nov 2015 05:51:19 +0000 (14:51 +0900)]
rtspsrc: avoid potentially overflowing expression

https://bugzilla.gnome.org/show_bug.cgi?id=757569

8 years agoqtdemux: Add the function to get channels and sample rate for AAC
Jimmy Ohn [Tue, 22 Mar 2016 01:43:45 +0000 (10:43 +0900)]
qtdemux: Add the function to get channels and sample rate for AAC

Add aac_get_channels and sample_rate function to get these value for
AAC.

https://bugzilla.gnome.org/show_bug.cgi?id=749110

8 years agoBack to development
Sebastian Dröge [Thu, 24 Mar 2016 11:33:02 +0000 (13:33 +0200)]
Back to development

8 years agoRelease 1.8.0
Sebastian Dröge [Thu, 24 Mar 2016 10:27:33 +0000 (12:27 +0200)]
Release 1.8.0

8 years agoUpdate .po files
Sebastian Dröge [Thu, 24 Mar 2016 10:02:59 +0000 (12:02 +0200)]
Update .po files

8 years agodeinterleave: Use GstIterator for iterating all pads instead of manually iterating...
Sebastian Dröge [Wed, 16 Mar 2016 18:18:41 +0000 (20:18 +0200)]
deinterleave: Use GstIterator for iterating all pads instead of manually iterating them while holding the object lock all the time

Doing queries while holding the object lock is a bit dangerous, and in this
case causes deadlocks.

https://bugzilla.gnome.org/show_bug.cgi?id=763326

8 years agodeinterlace: Fix typo to not change the input caps but our filtered caps
Vivia Nikolaidou [Thu, 17 Mar 2016 18:53:27 +0000 (20:53 +0200)]
deinterlace: Fix typo to not change the input caps but our filtered caps

Changing the input caps and not using them anymore afterwards is useless, and
it breaks negotiation in pipelines like:

gst-launch-1.0 videotestsrc ! "video/x-raw,framerate=25/1,interlace-mode=interleaved" !
  deinterlace fields=all ! "video/x-raw,framerate=50/1,interlace-mode=progressive" !
  fakesink

8 years agoRelease 1.7.91
Sebastian Dröge [Tue, 15 Mar 2016 10:04:39 +0000 (12:04 +0200)]
Release 1.7.91

8 years agoUpdate .po files
Sebastian Dröge [Tue, 15 Mar 2016 09:53:37 +0000 (11:53 +0200)]
Update .po files

8 years agopo: Update translations
Sebastian Dröge [Tue, 15 Mar 2016 09:41:22 +0000 (11:41 +0200)]
po: Update translations

8 years agortpmanager: Some comment and documentation clarifications/fixes
Nirbheek Chauhan [Mon, 14 Mar 2016 21:56:14 +0000 (03:26 +0530)]
rtpmanager: Some comment and documentation clarifications/fixes

8 years agoRevert "flacparse: push tags in pre_push_frame"
Sebastian Dröge [Sun, 13 Mar 2016 08:33:13 +0000 (10:33 +0200)]
Revert "flacparse: push tags in pre_push_frame"

This reverts commit 4065fcb80a49924b70f0c8fc159dec0ff47943a1.

flacparse should not push tags by itself, the base class is going to do that
while properly merging in upstream tags. It just didn't because of a bug in
the base class, which was hidden by this commit.

https://bugzilla.gnome.org/show_bug.cgi?id=763553

8 years agowin32: Don't use __attribute__ on MSVC
Nirbheek Chauhan [Wed, 24 Feb 2016 23:47:51 +0000 (05:17 +0530)]
win32: Don't use __attribute__ on MSVC

Use MSVC-equivalents for alignment and packing compiler directives when building
on MSVC

8 years agowin32: Don't try to include xmath.h on newer Visual Studio
Nirbheek Chauhan [Wed, 24 Feb 2016 23:46:42 +0000 (05:16 +0530)]
win32: Don't try to include xmath.h on newer Visual Studio

8 years agogst Factor out endian-order RGB formats
Nirbheek Chauhan [Wed, 24 Feb 2016 23:46:09 +0000 (05:16 +0530)]
gst Factor out endian-order RGB formats

MSVC seems to ignore preprocessor conditionals inside static pad
template macros.

8 years agodirctsoundsink: Setting volume should not unmute
Thomas Roos [Tue, 8 Mar 2016 16:37:17 +0000 (17:37 +0100)]
dirctsoundsink: Setting volume should not unmute

https://bugzilla.gnome.org/show_bug.cgi?id=755106

8 years agodirctsoundsink: Fix volume reset on unmute
Thomas Roos [Tue, 8 Mar 2016 12:57:24 +0000 (13:57 +0100)]
dirctsoundsink: Fix volume reset on unmute

https://bugzilla.gnome.org/show_bug.cgi?id=755106

8 years agov4l2object: fix capture with bayer formats other than bggr
Alban Bedel [Tue, 8 Mar 2016 12:03:55 +0000 (13:03 +0100)]
v4l2object: fix capture with bayer formats other than bggr

gst_v4l2_object_get_caps_info() always return V4L2_PIX_FMT_SBGGR8
for all bayer formats. This is obviously broken if the device use
another ordering. Fix this by properly reading the format parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=763318

8 years agoqtdemux: reset pending segment if we are already pushing one
Thiago Santos [Mon, 7 Mar 2016 13:28:06 +0000 (10:28 -0300)]
qtdemux: reset pending segment if we are already pushing one

When upstream is running in bytes in push-mode, qtdemux will
convert seeks from time to bytes and send it upstream. Upstream
element will perform a byte seek and send a byte segment to qtdemux
that will convert it to time and push it downstream.

There is, however, the pending_segment variable that stores a new
segment event to be pushed before the next data. When handling seeks
as mentioned above this variable was being ignored and, if it contained
some segment event, it would override the one resulting from the seek.
This would restore a previous segment and would cause the seek segment
to be discarded downstream.

This patch fixes this issue by unrefing any pending segment as the
seek from upstream should contain the latest one that should be
used, as requested by the application.

https://bugzilla.gnome.org/show_bug.cgi?id=763165

8 years agoqtdemux: run gst-indent
Thiago Santos [Mon, 7 Mar 2016 13:27:41 +0000 (10:27 -0300)]
qtdemux: run gst-indent

Otherwise commits will fail with our indent check hook

8 years agov4l2: fix colorimetry for NV12
Josep Torra [Fri, 4 Mar 2016 14:09:45 +0000 (15:09 +0100)]
v4l2: fix colorimetry for NV12

Replicate V4L2_MAP_QUANTIZATION_DEFAULT macro behavior.
At #v4l it was described that documentation might be wrong and that
we should trust this macro instead.

https://bugzilla.gnome.org/show_bug.cgi?id=762529

8 years agoudpsrc: Fix multicast group joining with provided sockets on Windows
Sebastian Dröge [Fri, 4 Mar 2016 12:07:19 +0000 (14:07 +0200)]
udpsrc: Fix multicast group joining with provided sockets on Windows

On Windows the socket will be bound to ANY instead of the multicast group,
as binding to a multicast group does not work. Which would mean that we
override src->addr to become ANY and won't automatically join a multicast
group anymore on Windows.

On Linux we would automatically join a multicast group, keep it consistent.

https://bugzilla.gnome.org/show_bug.cgi?id=763093

8 years agoRevert "rtpjitterbuffer: don't forget to unlock mutex in error code path in two cases"
Sebastian Dröge [Wed, 2 Mar 2016 11:13:24 +0000 (13:13 +0200)]
Revert "rtpjitterbuffer: don't forget to unlock mutex in error code path in two cases"

This reverts commit a7fb7b53592d87f7983544debb74d364fc3257ad.

The mutex is taken by the caller, we should keep it locked when returning so
the caller can unlock it again.