Mikhail Fludkov [Mon, 25 Jan 2016 15:25:51 +0000 (16:25 +0100)]
rtpsession: don't act on suspicious BYE RTCP
Some endpoints (like Tandberg E20) can send BYE packet containing our
internal SSRC. I this case we would detect SSRC collision and get rid
of the source at some point. But because we are still sending packets
with that SSRC the source will be recreated immediately.
This brand new internal source will not have some variables incorrectly
set in its state. For example 'seqnum-base` and `clock-rate` values will be
-1.
The fix is not to act on BYE RTCP if it contains internal or unknown
SSRC.
https://bugzilla.gnome.org/show_bug.cgi?id=762219
Mikhail Fludkov [Sun, 15 Nov 2015 13:54:28 +0000 (14:54 +0100)]
rtpsession: Add test for locking of the stats signal
Keeping the lock while emitting the stats signal introduces potential
deadlock in those situations when the signal callback wants the access
to rtpsession's properties which also requre the lock.
https://bugzilla.gnome.org/show_bug.cgi?id=762216
Seungha Yang [Thu, 19 May 2016 06:36:57 +0000 (15:36 +0900)]
matroskademux: don't hold object lock whilst pushing out headers
matroskademux would take the GST_OBJECT_LOCK in
- gst_matroska_demux_push_codec_data_all()
- gst_matroska_demux_query()
Some parse element such as FLAC checks upstream seekability, and
there is some use cases that matroska-demux is linked to a parse element
(e.g.,FLAC format) without intermediate elements (e.g., queue).
In this case, matroska-demux never returns from _push_codec_data_all()
because the parser can return only after it receives the response to
the upstream query, but that's not going to happen because it's
deadlocked.
Elements must not hold the object lock whilst pushing out events
or data.
https://bugzilla.gnome.org/show_bug.cgi?id=766645
Sebastian Dröge [Thu, 19 May 2016 09:43:01 +0000 (12:43 +0300)]
souphttpclientsink: Set sent_buffers and streamheader_buffers to NULL after freeing
Otherwise we might use an already freed list later and crash or worse.
Tim-Philipp Müller [Wed, 18 May 2016 17:32:57 +0000 (18:32 +0100)]
udpsrc: fix Since version for new "loop" property
Guillaume Desmottes [Mon, 16 May 2016 14:18:37 +0000 (16:18 +0200)]
rtpdec: fix clock leak
gst_system_clock_obtain() returns a new ref.
https://bugzilla.gnome.org/show_bug.cgi?id=766521
Tim-Philipp Müller [Tue, 17 May 2016 04:33:35 +0000 (05:33 +0100)]
udpsrc: add doc blurb with since marker for new "loop" property
Dimitrios Katsaros [Fri, 13 Nov 2015 14:52:35 +0000 (15:52 +0100)]
avimux: add support for png
https://bugzilla.gnome.org/show_bug.cgi?id=758059
Jan Schmidt [Sun, 15 May 2016 12:07:14 +0000 (22:07 +1000)]
splitmuxsrc: Connect to demux signals before activating
Fix a race in splitmuxsrc by properly connecting to the
demuxer signals we're interested in *before* setting it running.
Sebastian Dröge [Sun, 15 May 2016 10:31:37 +0000 (13:31 +0300)]
docs: Update for git master
Olivier Crête [Sun, 15 May 2016 10:16:23 +0000 (12:16 +0200)]
rtpmp4gpay: Don't produce timestamps based on byte count
The GST_BUFFER_OFFSET of output buffers returned to GstRtpBasePayload
should reflect the number of "samples" in the unit of the RTP clock in this
buffer. If this is not true, then it shouldn't be set.
https://bugzilla.gnome.org/show_bug.cgi?id=761943
Edward Hervey [Sun, 15 May 2016 10:24:03 +0000 (12:24 +0200)]
matroska-mux: Fix strcmp usage
Just use g_strcmp0 which can handle NULL entries
Carlos Rafael Giani [Fri, 4 Mar 2016 09:14:00 +0000 (10:14 +0100)]
souphttpsrc: Use audio/x-unaligned-raw instead of audio/x-raw for L16 data
Directly setting audio/x-raw caps leads to problems when the delivered
data blocks do not align properly at sample boundaries (for example, a
data block with 391 bytes). So, instead, set audio/x-unaligned-raw to
let a parser be autoplugged.
https://bugzilla.gnome.org/show_bug.cgi?id=689460
Seungha Yang [Thu, 12 May 2016 02:52:09 +0000 (11:52 +0900)]
qtdemux: Parsing elst box based on version
segment_duration and media_time should be parsed based on version
of elst box. Specification defines that an elst box with version 1
has uint64 and int64 values for segment_duration and media_time,
respectively.
https://bugzilla.gnome.org/show_bug.cgi?id=766301
Thiago Santos [Sat, 14 May 2016 15:57:41 +0000 (12:57 -0300)]
souphttpsrc: check if request was cancelled when sending message
It might be that the request was aborted by the application and
we can return immediatelly
Thiago Santos [Sat, 14 May 2016 15:43:54 +0000 (12:43 -0300)]
souphttpsrc: proxy resolver is on by default
Remove from the session creation parameters
Thiago Santos [Sat, 14 May 2016 15:15:48 +0000 (12:15 -0300)]
soup: update build to warn about newer deprecated functions
We already depend on 2.48
Thiago Santos [Sat, 14 May 2016 14:09:33 +0000 (11:09 -0300)]
souphttpsrc: reduce reading latency by using non-blocking read
Non-blocking read will return the amount of data available without
blocking to wait for the full requested size.
The downside is that now it souphttpsrc needs to have a waiting
mechanism in case there is no data available yet to avoid busy
looping arond the inputstream.
Sebastian Dröge [Sun, 15 May 2016 09:30:50 +0000 (12:30 +0300)]
rtpsession: Take the lock already when reading the other stats, not just for the hash table
https://bugzilla.gnome.org/show_bug.cgi?id=766025
Tim-Philipp Müller [Sat, 14 May 2016 16:04:57 +0000 (17:04 +0100)]
matroska: use math-compat.h for NAN define
Jan Schmidt [Sat, 14 May 2016 13:39:22 +0000 (23:39 +1000)]
splitmuxsink: Use GstBin async-handling instead of our own.
Set the async-handling property on GstBin to let it manage
async-handling instead of the local handling from the previous
commit. Works because of #174a5e in core
Thiago Santos [Fri, 13 May 2016 13:17:33 +0000 (10:17 -0300)]
souphttpsrc: refactor to use Soup's sync API
Replace the async API with the sync API to remove all the extra mainloop
and context handling. Currently it blocks reading until 'blocksize'
bytes are available but that can be improved by using:
https://developer.gnome.org/gio/unstable/GPollableInputStream.html#g-pollable-input-stream-read-nonblocking
https://bugzilla.gnome.org/show_bug.cgi?id=693911
Thiago Santos [Sat, 14 May 2016 07:50:36 +0000 (04:50 -0300)]
tests: souphttpsrc: replace deprecated API
Avoid using soup_server_run_async and old get_port() APIs,
replace with me soup_server_listen and get the port through the
URIs list returned from the server.
Olivier Crête [Sat, 14 May 2016 10:34:10 +0000 (12:34 +0200)]
jitterbuffer: Upgrade debug message to error
It causes the entire pipeline to fail, it should be easier to find.
Jan Schmidt [Sat, 14 May 2016 08:32:52 +0000 (18:32 +1000)]
splitmuxsink: Hide internal async state changes.
When switching fragments, hide the async-start/async-done
messages from the parent bin, as otherwise we sometimes (very rarely)
hang in PAUSED instead of returning / continuing to PLAYING
state.
Jan Schmidt [Fri, 13 May 2016 11:20:28 +0000 (21:20 +1000)]
splitmuxsink: Remove stray carriage-return from debug
Sebastian Dröge [Fri, 13 May 2016 13:43:21 +0000 (16:43 +0300)]
rtp: Ship gstrtpj2kcommon.h file to fix distcheck
Jesper Larsen [Thu, 30 Apr 2015 12:43:04 +0000 (14:43 +0200)]
avimux: Do not write index and header if idx is NULL
Fixes criticals with e.g.
videotestsrc num-buffers=1 ! identity drop-probability=1.0 ! avimux ! fakesink
https://bugzilla.gnome.org/show_bug.cgi?id=748700
Aaron Boxer [Thu, 12 May 2016 12:43:39 +0000 (08:43 -0400)]
rtpj2kpay: manage T tile invalidation bit correctly, update tile id in header correctly.
1. according to RFC, T bit is only set when either the RTP packet only contains the J2K main header, or the packet contains tile parts from multiple tiles. This is now being managed correctly in the code. The second scenario cannot happen with our payloader, since tile headers are always placed in their own RTP packet, and so a packet cannot contain tile parts from multiple tiles.
However, I have added code to track if multiple tile parts are included in a single RTP packet, in case in the future we want to put header and data in same packet.
2. Old code would set the tile id to zero for all J2K packets. This is now set correctly to the appropriate tile id.
https://bugzilla.gnome.org/show_bug.cgi?id=745187
Aaron Boxer [Thu, 12 May 2016 12:41:51 +0000 (08:41 -0400)]
rtpj2kpay: manage fragmented headers correctly
J2K main header framentation across multiple RTP packets is now handled correctly
https://bugzilla.gnome.org/show_bug.cgi?id=745187
Aaron Boxer [Wed, 11 May 2016 19:04:26 +0000 (15:04 -0400)]
rtpj2k: move common code to shared header, code clean up
https://bugzilla.gnome.org/show_bug.cgi?id=745187
Aaron Boxer [Wed, 11 May 2016 19:01:32 +0000 (15:01 -0400)]
rtpj2k: update documentation
https://bugzilla.gnome.org/show_bug.cgi?id=745187
Patricia Muscalu [Thu, 12 May 2016 12:43:43 +0000 (14:43 +0200)]
auparse: Fix sticky event misordering warning
Make sure that src pad has caps before sending segment event.
https://bugzilla.gnome.org/show_bug.cgi?id=766359
Sebastian Dröge [Wed, 11 May 2016 06:28:13 +0000 (09:28 +0300)]
rtpsession: Don't notify about stats property changes while taking the session lock
The signal handlers might want to actually get the value of the stats
property, which would take the session lock again and deadlock.
This was introduced by
2e960e70750a0cb7e1117d0c09d08597866a29ee.
https://bugzilla.gnome.org/show_bug.cgi?id=766025
Thiago Santos [Tue, 3 May 2016 16:59:54 +0000 (13:59 -0300)]
qtdemux: improve edts segment handling after seeks in push mode
Properly handle edts segments for push-based operation seeking.
We only support edts that a single segment that has media at the end,
being preceeded by any number of gap segments.
This also allows the qt segment rate to be respected after seeks
https://bugzilla.gnome.org/show_bug.cgi?id=765669
Thiago Santos [Tue, 3 May 2016 13:41:06 +0000 (10:41 -0300)]
qtdemux: properly activate segment with rate != 1.0
Also use the qt rate to identify the position within a qt segment
to properly translate playback time to qt media time
https://bugzilla.gnome.org/show_bug.cgi?id=765669
Havard Graff [Tue, 3 May 2016 09:45:01 +0000 (11:45 +0200)]
rtpjitterbuffer: Fix stall when receiving already lost packet
When a packet arrives that has already been considered lost as part of a
large gap the "lost timer" for this will be cancelled. If the remaining
packets of this large gap never arrives, there will be missing entries
in the queue and the loop function will keep waiting for these packets
to arrive and never push another packet, effectively stalling the
pipeline.
The proposed fix conciders parts of a large gap definitely lost (since
they are calculated from latency) and ignores the late arrivals.
In practice the issue is rare since large gaps are scheduled immediately,
and for the stall to happen the late arrival needs to be processed
before this times out.
https://bugzilla.gnome.org/show_bug.cgi?id=765933
Miguel París Díaz [Thu, 5 May 2016 12:18:21 +0000 (14:18 +0200)]
rtpsession: Take session lock when creating stats
The access to the session hash table must happen while the session lock is
taken, otherwise another thread might modify the hash table while we're
creating the stats.
https://bugzilla.gnome.org/show_bug.cgi?id=766025
Thiago Santos [Wed, 4 May 2016 00:17:01 +0000 (21:17 -0300)]
qtdemux: update segment when new duration is found
Otherwise the old segment will have a shorter stop time and would
cause the stream to end too early.
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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.
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.
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
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
Tim-Philipp Müller [Fri, 22 Apr 2016 14:48:08 +0000 (15:48 +0100)]
deinterlace: fix description of linear interlacing method
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
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
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
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
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
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
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
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
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
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
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.
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.
Julien Isorce [Thu, 14 Apr 2016 09:01:28 +0000 (10:01 +0100)]
Automatic update of common submodule
From
6f2d209 to
ac2f647
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
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.
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
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
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.
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.
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
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.
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
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.
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
Sebastian Dröge [Mon, 11 Apr 2016 07:44:56 +0000 (10:44 +0300)]
rtpmanager: It's GST_LIBS, not GST_LIBS_LIBS
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
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
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
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
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
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
Nirbheek Chauhan [Wed, 10 Feb 2016 14:26:59 +0000 (19:56 +0530)]
v4l2: Don't leak v4l2 objects and props on probe errors
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.
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%.
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
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
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
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
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
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
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