Commit graph

17884 commits

Author SHA1 Message Date
Nirbheek Chauhan
eedb25c3b4 audiomixer: Document the pad properties 2014-12-27 11:02:36 +00:00
Sebastian Dröge
ba1b53113a aggregator: Make sure that the minimum latencies are never GST_CLOCK_TIME_NONE 2014-12-27 09:49:43 +01:00
Sebastian Dröge
6449e3d897 aggregator: Wait for the minimum latency, not the maximum
The minimum latency is the latency we have to wait at least
to guarantee that all upstreams have produced data. The maximum
latency has no meaning like that and shouldn't be used for waiting.
2014-12-27 09:45:08 +01:00
Nirbheek Chauhan
46f857b314 aggregator: Clamp the min latency at the max if it's greater 2014-12-27 09:45:08 +01:00
Nirbheek Chauhan
3193094cbc aggregator: Print the sinkpad name while logging latency queries
Very useful while debugging.
2014-12-27 09:45:08 +01:00
Nirbheek Chauhan
f3efb9e7d6 aggregator: Take the stream lock when iterating sink pads
When iterating sink pads to collect some data, we should take the stream lock so
we don't get stale data and possibly deadlock because of that. This fixes
a definitive deadlock in _wait_and_check() that manifests with high max
latencies in a live pipeline, and fixes other possible race conditions.
2014-12-27 09:45:08 +01:00
Thiago Santos
882018e6dd wrappercamerabinsrc: do not set source state with lock
It might be racy with the image probe thread as it uses the capture
mutex just like the start-capture handler from camerabin. The
start-capture would be waiting for the source's streaming thread
to stop to be able to set the source state to ready while the
probe would be blocked waiting to acquire the capture mutex.
It causes a deadlock.
2014-12-26 23:07:39 -03:00
Thiago Santos
6fa077f465 wrappercamerabinsrc: use the drain query instead of flush
The flush might clear any pending captures that are still in
queues being processed while the drain query will wait for those
to be properly done
2014-12-26 23:07:39 -03:00
Alessandro Decina
5496fd3e75 avfvideosrc: improve timestamp code
Use a combination of the running time and CMClockGetTime from AVF to compute
timestamps.
2014-12-27 12:43:45 +11:00
Tim-Philipp Müller
fd429d3233 gdppay: use public API for accessing stream header arrays in caps
Don't rely on core implementation details, which are private and
may change. It's also not needed here, the performance impact is
close to none. Also copy buffer before changing its metadata.
2014-12-26 13:44:35 +00:00
Tim-Philipp Müller
ad25461dac tests: gdpdepay: update for internal gdp refactoring
This test uses some internal/private API, so needs to
be updated for recent changes.
2014-12-26 13:44:35 +00:00
Tim-Philipp Müller
62294f0650 gdppay: refactor payloading code a little
Get rid of some indirections and inefficiencies,
just payload things directly which gives us more
control over what memory is allocated where and
how and makes things much simpler. In particular,
we can now allocate the payload header plus the
GstMemory to represent it in one go.
2014-12-26 13:44:33 +00:00
Tim-Philipp Müller
c184a4bb04 gdppay: refactor a little
Get rid of now-useless packetizer struct and just
call internal functions directly. Also remove
version property which is now defunct, not least
because we create the packetizer with the
version in the init function before a version
can be set.
2014-12-26 13:44:32 +00:00
Tim-Philipp Müller
3e74746d72 tests: gdppay: initialise memory of buffers used in unit test 2014-12-26 13:44:32 +00:00
Tim-Philipp Müller
d790ba9a06 gdppay: optimise payloading of buffers with multiple memories
Add function to calculate a payload CRC across multiple memories
so we don't have to merge buffers with multiple memories just to
calculate the CRC. Also make CRC calculation function static,
since it's not used outside dataprotocol.h and move special-casing
of length = 0 -> CRC = 0 into CRC function (from caller).

Perhaps more importantly, since payload CRC is off by default:
don't map buffer (and possibly merge memories in the process)
if we are not going to use it to calculate a CRC anyway.
2014-12-26 13:44:32 +00:00
Tim-Philipp Müller
3853f8c070 gdppay: dataprotocol: drop bogus const
Doesn't really make sense given that we map
it and possibly merge memories and such.
2014-12-26 13:44:29 +00:00
Vijay Jayaraman
68e77265a0 hlsdemux: typefind might fail if first buffer is too short
If typefind fails, check to see if the buffer is too short for typefind. If this is the case,
prepend the decrypted buffer to the pending buffer and try again the next time around.

https://bugzilla.gnome.org/show_bug.cgi?id=740458
2014-12-23 10:08:57 -03:00
Thiago Santos
1e9ce11efd hlsdemux: port to adaptive base class
Conflicts:
	ext/hls/gsthlsdemux.c
	ext/hls/gsthlsdemux.h
2014-12-23 10:08:57 -03:00
Thiago Santos
c65aeedb6f adaptivedemux: check if element exists before setting it to null
Under certain error conditions it might happen that the element
has been freed already and trying to set it to NULL causes an
assertion
2014-12-23 10:08:57 -03:00
Thiago Santos
3dfab51b92 adaptivedemux: make sure task has stopped before freeing it
Otherwise the thread will be running and its memory will get freed.
This leads to memory corruption
2014-12-23 10:08:56 -03:00
Thiago Santos
0bef1974e2 adaptivedemux: fix segment start when exposing new streams
Segment start needs only to be updated when starting the streams
or after a seek, doing it during bitrate changes will cause the
running time to go discontinuous (jump back to a previous ts)
and QOS will drop buffers
2014-12-23 10:08:56 -03:00
Thiago Santos
73fb0850c9 adaptivedemux: allow subclass to use new pads group when switching bitrate
Fix pad groups switching when bitrate changes to allow HLS to use this feature
2014-12-23 10:08:51 -03:00
Sebastian Dröge
be7034d1f7 audiomixer: If getting a timeout before having caps, just advance our position
This can happen if this is a live pipeline and no source produced any buffer
and sent no caps until the an output buffer should've been produced according
to the latency.
2014-12-23 12:24:48 +01:00
Sebastian Dröge
0e8604f4ee audiomixer: Make sure to release the current buffer in reset()
If we didn't output the last one in aggregate because we were shutting down
earlier we might otherwise leak it.
2014-12-23 12:15:50 +01:00
Sebastian Dröge
7c575af6df audiomixer: Change blocksize property to output-buffer-duration in time format
This makes the interface of audiomixer independent of the actual caps.
2014-12-23 11:45:50 +01:00
Sebastian Dröge
6771db209d aggregator: Don't leak flush-start events 2014-12-23 11:45:05 +01:00
Sebastian Dröge
e7867a3586 aggregator: Also change the default latency to 0, not just the minimum 2014-12-23 10:24:27 +01:00
Sebastian Dröge
c04bb6983e aggregator: Fix docs and default value of the latency property 2014-12-23 09:52:20 +01:00
Sebastian Dröge
800f0ac49b aggregator: Also include the subclass latency in the result of the latency query 2014-12-22 22:19:52 +01:00
Sebastian Dröge
ad9fe1fe7b videoaggregator: Use the src query implementation of aggregator as the default case 2014-12-22 22:12:02 +01:00
Sebastian Dröge
8244e78d19 audiomixer: Use the src query implementation of aggregator as the default case 2014-12-22 22:12:02 +01:00
Tim-Philipp Müller
68d4616ac8 bayer2rgb: take into account filter in transform_caps function
Fixes criticals when filter caps are passed.

Also fix wrong GST_DEBUG_OBJECT use.

https://bugzilla.gnome.org/show_bug.cgi?id=741863
2014-12-22 16:46:06 +00:00
Sebastian Dröge
5dd1dfdadc aggregator: Post a latency message if the value of the latency property changes 2014-12-22 15:27:25 +01:00
Sebastian Dröge
a27ff89d42 aggregator: Wake up the src thread after handling a latency query
Due to changed latencies or changed live-ness we might have to
adjust if we wait on a deadline at all and how long.
2014-12-22 15:03:59 +01:00
Sebastian Dröge
341e5291c3 aggregator: Don't count the number of times we need to wake up but instead check all conditions for waiting again
This simplifies the code and also makes sure that we don't forget to check all
conditions for waiting.

Also fix a potential deadlock caused by not checking if we're actually still
running before starting to wait.
2014-12-22 15:00:36 +01:00
Sebastian Dröge
568da160cb vtenc: Instead of crashing if no corresponding frame is found, ignore this
... and hope that everything will be fine. This shouldn't really happen but
previously happened during shutdown. It should be fixed in videoencoder now,
but better be on the safe side here.
2014-12-22 11:49:08 +01:00
Sebastian Dröge
a2d31cc59b MAINTAINERS: Update my mail address 2014-12-22 11:46:17 +01:00
Stefan Sauer
23da373c63 audiomixer: fix build flag order
Have the libraries/inlcudes from plugins-bad first to avoid picking up the installed version.
Fixes the build when the local api changed.
2014-12-21 07:47:25 -05:00
Stefan Sauer
d6d9e91877 freeverb: add a few presets 2014-12-20 12:29:13 -05:00
Nicolas Dufresne
046639ddaa gltest: Port to new API
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 13:19:34 -05:00
Nicolas Dufresne
207308446b glbufferpool: Always recalculate buffer size
Actually we should always recalculate buffer size since our buffer size
even when not-padded is smaller for many sub-sampled formats. This is
because we don't add padding between the planes.

https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 12:25:41 -05:00
Nicolas Dufresne
170a49f901 glmemory: No need for padding
A memory object cannot be put on stack, so no need for padding.
2014-12-19 12:12:08 -05:00
Nicolas Dufresne
9954de1ccd gl: Add support for GstVideoAlignment
This allow saving a copy with libav video decoders or decoders with
similar padding requirement.

https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 12:11:08 -05:00
Nicolas Dufresne
da3ae06cd1 glmemory: Handle upload/download flags from map
Problem was that if buffer was mapped READWRITE (state of buffers from
libav right now), mapping it READ/GL will not upload. This is because the
flag is only set when the buffer is unmapped. We can fix this by setting
the flags in map. This result in already mapped buffer that get mapped
to be read in GL will be uploaded. The problem is that if the write
mapper makes modification afterward, the modification will never get
uploaded.

https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 11:45:35 -05:00
Nicolas Dufresne
4f3c33af3a glmemory: Handle custom stride with OPENGL3
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 11:45:35 -05:00
Sebastian Dröge
d632a48d6c decklink: Fix various compiler warnings with gcc 2014-12-19 15:05:58 +01:00
Sebastian Dröge
5e7782ca39 decklink: Re-add the COM initialization code for Windows
Untested, and we will never deinitialize COM again.
2014-12-19 14:50:25 +01:00
Sebastian Dröge
f9d16c5913 decklink: Remove in-same-pipeline detection code for audio/video elements of the same device
This causes deadlocks sometimes for some reason.
2014-12-19 14:40:40 +01:00
Sebastian Dröge
9c2e09cf39 decklinkvideosink: Implement clock slaving 2014-12-19 14:40:40 +01:00
Sebastian Dröge
b9e17c5605 decklinkvideosink: Add some more debug output for when frames are scheduled 2014-12-19 14:40:40 +01:00