Edward Hervey [Fri, 10 Nov 2017 13:54:12 +0000 (14:54 +0100)]
parsebin: Don't let thread run after unref
We have a dedicated one-shot thread to handle cleanup of old groups.
While this is a good idea. It's an even better idea to make sure
that thread is *completed* before the parsebin element to which
it is related isn't freed/gone.
* There can only be one cleanup thread happening at any point in time.
If there is already one, we wait for the previous one to finish.
* When shutting down (NULL=>READY) make sure the thread is finished
https://bugzilla.gnome.org/show_bug.cgi?id=790007
Edward Hervey [Fri, 10 Nov 2017 13:54:12 +0000 (14:54 +0100)]
decodebin2: Don't let thread run after unref
We have a dedicated one-shot thread to handle cleanup of old groups.
While this is a good idea. It's an even better idea to make sure
that thread is *completed* before the decodebin2 element to which
it is related isn't freed/gone.
* There can only be one cleanup thread happening at any point in time.
If there is already one, we wait for the previous one to finish.
* When shutting down (NULL=>READY) make sure the thread is finished
https://bugzilla.gnome.org/show_bug.cgi?id=790007
Edward Hervey [Fri, 10 Nov 2017 13:22:38 +0000 (14:22 +0100)]
parsebin: Check for shutdown before exposing pads
We already checked previously, but we need to do it before adding
pads.
Edward Hervey [Wed, 6 Sep 2017 14:50:31 +0000 (16:50 +0200)]
parsebin: Emit 'drained' only for the top-level chain
Instead of emitting 'drained' whenever every single chain is drained
(which would result in plenty of signal emission, and would also
occur when switching groups), only emit it when the top-level chain
is drained.
Furthermore, mark unknown (and therefore unexposed) pads as drained
since we'll never get EOS on them.
https://bugzilla.gnome.org/show_bug.cgi?id=787367
Sebastian Dröge [Wed, 8 Nov 2017 17:24:31 +0000 (19:24 +0200)]
audiobasesink: Print signed time offset as a signed number
Sebastian Dröge [Wed, 8 Nov 2017 17:24:02 +0000 (19:24 +0200)]
audiostreamalign: Add G_BEGIN_DECLS/G_END_DECLS
Edward Hervey [Wed, 8 Nov 2017 16:15:09 +0000 (17:15 +0100)]
oggdemux: Solidify gst_ogg_demux_loop_push() some more
There were still some races going on where seeking events wouldn't
be properly intercepted/executed by this thread.
* Instead of always waiting for the GCond to be emitted, first just
check if there is an event available
* Take ownership of the event *while* the lock is taken and not
after releasing/reacquiring it
* Finally acquire lock at the very top and release it at the end
to make it a bit more streamlined
This removes the remaining issues with seeks not being executed
Edward Hervey [Wed, 8 Nov 2017 16:08:49 +0000 (17:08 +0100)]
oggdemux: Don't double-unlock
The previous branch will release the lock in the call to
gst_ogg_demux_seek_back_after_push_duration_check_unlock()
Only unlock it if we didn't call that function
Edward Hervey [Tue, 7 Nov 2017 14:09:40 +0000 (15:09 +0100)]
oggdemux: Drop data before new segment
When calculating duration in push-mode we seek to a certain position
and discard any data until we get data from that requested position.
The problem is that basing ourselves solely on offset to determine
whether we reached the target offset is wrong since the source might
be fast enough to send us that target position *before* it processed
the requested seek.
This would end up in a situation where:
* We think we're done with duration estimate
* We fire a seek back to "0" in the loop thread
* We resume normal processing
* ... except that we're still getting data from too far ahead which
we decide to process.
* And we start doing totally wrong granule/time/duration calculation
and pushing wrong data.
Instead of this confusion, wait until we receive data from the requested
seek. We do that by using the fact that the seqnum in
seek_event_drop_til will be non-zero until the SEGMENT corresponding
to the requested SEEK has been received.
Bonus: makes startup slightly faster
Edward Hervey [Tue, 7 Nov 2017 14:05:19 +0000 (15:05 +0100)]
oggdemux: Wait for push loop to be started
Code using the push_loop_thread (using for sending seeks) assumes
that the thread was properly started, except that this isn't always
true and the thread might not have completely started.
Instead wait for the thread to properly start before doing anything
else.
shakin chou [Fri, 3 Nov 2017 03:39:54 +0000 (11:39 +0800)]
playbin: Don't ref_sink() the sinks twice
Since we're already sunk floating reference, we shouldn't call ref_sink
again, which increases the ref_count and cause leaks.
https://bugzilla.gnome.org/show_bug.cgi?id=789547
Edward Hervey [Mon, 6 Nov 2017 13:28:52 +0000 (14:28 +0100)]
oggstream: Ensure enough bytes for fishead header parsing
Edward Hervey [Sun, 5 Nov 2017 11:16:13 +0000 (12:16 +0100)]
oggstream: Use proper type for sample calculation
If we are going to return a (potentially) 64bit integer, don't use
a 32bit one for calculation, otherwise we could end up exceeding
the maximum size of a 32bit int.
Edward Hervey [Sun, 5 Nov 2017 11:15:33 +0000 (12:15 +0100)]
oggstream: More fixes for invalid granuleshift
Don't use granuleshift if it wasn't set
Edward Hervey [Sat, 4 Nov 2017 18:48:13 +0000 (19:48 +0100)]
discoverer: Don't switch to PLAYING if we saw an error
If we saw an error on the bus, we can't be guaranteed that element will
function properly anyway. Avoids weird state change races also
Edward Hervey [Sat, 4 Nov 2017 18:08:40 +0000 (19:08 +0100)]
Revert "discoverer: Avoid race of adding elements while stopping"
This reverts commit
9a8cb299702c6e8c01b5f4a366f7cffc6b13f97a.
The problem is deeper down the stack
Edward Hervey [Sat, 4 Nov 2017 15:56:10 +0000 (16:56 +0100)]
rtcpbuffer: fix left shift override
Needs to be cast to the target type
Edward Hervey [Sat, 4 Nov 2017 15:13:06 +0000 (16:13 +0100)]
discoverer: Avoid race of adding elements while stopping
This would result in a lot of warnings regarding elements not being
in NULL state when removed, or even leaked elements.
Instead make sure we take the lock and check whether we are processing
or not before allocating or adding anything to the pipeline
Edward Hervey [Sat, 4 Nov 2017 11:19:46 +0000 (12:19 +0100)]
videotestsrc: Fix undefined left shift
Cast value to target type
Edward Hervey [Sat, 4 Nov 2017 11:18:39 +0000 (12:18 +0100)]
video-converter: Fix undefined left shift
Cast value to target type
Edward Hervey [Sat, 4 Nov 2017 10:29:52 +0000 (11:29 +0100)]
oggstream: Fix default granuleshift usage
For stream mappers that don't set a specific granuleshift, it will
have the default value of -1.
Protect the code for that and return the granule value as-is
Edward Hervey [Sat, 4 Nov 2017 10:28:47 +0000 (11:28 +0100)]
oggdemux: Protect against invalid granule positions
Only valid values are -1, 0 or positive values. Anything else is
most likely corrupted data streams
Mathieu Duponchelle [Fri, 3 Nov 2017 16:20:44 +0000 (17:20 +0100)]
codecutils: improve input validation in opus header parsing
Invalid input files do not warrant assertions. Instead
output error messages and let the error bubble up.
Justin Kim [Wed, 1 Nov 2017 02:23:17 +0000 (11:23 +0900)]
sdpmessage: add_attribute accepts NULL value
The attribute can be defined without value regardless session-level
or media-level.
Although `gst_sdp_message_insert_attribute` can be used to set NULL,
it would be easier if `gst_sdp_message_add_attribute` accepts NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=789841
Edward Hervey [Thu, 2 Nov 2017 14:14:49 +0000 (15:14 +0100)]
typefind: Fix out-of-bound read in PNM typefinder
Edward Hervey [Thu, 2 Nov 2017 09:40:37 +0000 (10:40 +0100)]
vorbistag: Fix previous comment
We already NULL-ended the string, don't use the bogus cur_size
Tim-Philipp Müller [Thu, 2 Nov 2017 09:05:47 +0000 (09:05 +0000)]
typefindfunctions: fix off-by-one in webvtt typefinder
We're also checking the byte after the WEBVTT magic.
Edward Hervey [Thu, 2 Nov 2017 08:19:21 +0000 (09:19 +0100)]
riff-media: Handle strf_data being NULL
Instead of trying to get the size of a NULL buffer :)
Edward Hervey [Thu, 2 Nov 2017 07:18:26 +0000 (08:18 +0100)]
vorbistag: Check whether tag name is valid
In the same way we check before whether the content of the tag
is UTF-8
Edward Hervey [Thu, 2 Nov 2017 07:04:27 +0000 (08:04 +0100)]
discoverer: Check return values
The target pad of a ghostpad could have gone (due to shutdown taking
place for example). Check for it's existence before doing anything
with it.
Edward Hervey [Thu, 2 Nov 2017 06:55:16 +0000 (07:55 +0100)]
decodebin2: Recheck shutdown behaviour in error case
If we can expose the main chain, recheck whether we are shutting
down or not.
decodebin2 might have been set to READY/NULL during the attempt
to expose, which would cause it to fail ... but it is not a fatal
issue.
Edward Hervey [Thu, 2 Nov 2017 06:18:17 +0000 (07:18 +0100)]
discoverer: Uniquely name elements
Helps identifying actual queue/fakesink usage. There seems to be
a race in discoverer, this should help track it down.
Edward Hervey [Wed, 1 Nov 2017 17:26:20 +0000 (18:26 +0100)]
oggdemux: Only track time for initialized streams
in push-mode we only can track time (or most operations on streams
for that matter) if the underlying GstOggMap was properly initialized.
Edward Hervey [Wed, 1 Nov 2017 17:24:11 +0000 (18:24 +0100)]
oggstream: Add a default GstOggMap
Since the default value of a GstOggPad.map.map was 0 ... we would
end up using wrong functions from mappers() if the stream wasn't
initialized yet.
Instead of that, use a default blank/empty first entry.
Sebastian Dröge [Mon, 17 Jul 2017 14:07:26 +0000 (17:07 +0300)]
rtspconnection: Allow setting a custom accept-certificate function for manually checking a TLS certificate for validity
https://bugzilla.gnome.org/show_bug.cgi?id=785024
Edward Hervey [Wed, 1 Nov 2017 10:19:58 +0000 (11:19 +0100)]
ogmparse: Ensure we don't create bogus fractions
The clamping of the fraction denominator was bogus (it needs to
be >0)
Edward Hervey [Wed, 1 Nov 2017 10:18:12 +0000 (11:18 +0100)]
oggdemux: Fix chain leak in push mode
In some corner cases we end up with the building chain not being
properly tracked (and therefore not properly freed).
Add a FIXME so it can later be fixed, but for now just fix the leak
Edward Hervey [Wed, 1 Nov 2017 09:53:54 +0000 (10:53 +0100)]
vorbistag: Fix leak in error case
Don't leak the vendor_string on error cases
Edward Hervey [Wed, 1 Nov 2017 09:31:28 +0000 (10:31 +0100)]
ogmparse: Error out if we can't figure out the format
In some cases we might not be able to figure out the fixed format
from the header.
Properly error out in those cases.
Justin Kim [Wed, 1 Nov 2017 04:52:50 +0000 (13:52 +0900)]
rtcpbuffer: Add XR type
RTCP XR provides supplements information of the report blocks
from SR and RR. This patch is for downgrading warnings when
XR is detected before implementing entire block types of RFC3611.
https://bugzilla.gnome.org/show_bug.cgi?id=789743
Justin Kim [Wed, 1 Nov 2017 03:44:59 +0000 (12:44 +0900)]
sdpmessage: do not append NULL value for session-level attr
If an attribute is defined without value, the generated text
should be 'a=key' rather than 'a=key:'. For media-level, it
has already been done.
https://bugzilla.gnome.org/show_bug.cgi?id=789742
Edward Hervey [Tue, 31 Oct 2017 10:56:22 +0000 (11:56 +0100)]
Update disted orc file
For latest orc fixes
Edward Hervey [Tue, 31 Oct 2017 09:34:26 +0000 (10:34 +0100)]
ogg: Don't add tags to empty taglist
Edward Hervey [Mon, 30 Oct 2017 10:10:11 +0000 (11:10 +0100)]
typefind: Use GST_READ_UINT32 macros
Avoids undefined behaviour with shifting
Edward Hervey [Mon, 30 Oct 2017 07:55:48 +0000 (08:55 +0100)]
typefind: Fix out-of-bound memory access
We were not checking the proper amount of available data in several
places
Vivia Nikolaidou [Fri, 27 Oct 2017 15:29:40 +0000 (18:29 +0300)]
audioconvert: Fix empty mix matrix documentation typo
Seungha Yang [Thu, 16 Mar 2017 11:55:44 +0000 (20:55 +0900)]
decodebin3: Allow configure output stream without reassign slot
By select-streams event, current implementation of decodebin3
supports deactivate output stream (i.e., decoder element)
in reassign slot(), but cannot activate any slot without track change.
https://bugzilla.gnome.org/show_bug.cgi?id=778015
Seungha Yang [Thu, 16 Mar 2017 10:53:11 +0000 (19:53 +0900)]
playbin3: Use STREAMS_SELECTED message to update selected stream types
Application might choose only specific type among all available types
using select-streams event. In this case, it is desired that reconfigure
of playsink to clear unused stream path.
https://bugzilla.gnome.org/show_bug.cgi?id=778015
Edward Hervey [Fri, 27 Oct 2017 07:51:29 +0000 (09:51 +0200)]
gst-play: Prevent disabling all streams
This would have bad effects :)
Seungha Yang [Thu, 16 Mar 2017 08:52:04 +0000 (17:52 +0900)]
gst-play: Support track change on playbin3
* playbin3 does not support {current,n}-{audio,video,text}
properties, and they were replaced by GstStreams API.
So, GstStreams API and select-stream event should be used
for track change in case of playbin3.
see also https://bugzilla.gnome.org/show_bug.cgi?id=769079
* By using commend line option "--use-playbin3", gst-play will
use playbin3 regardless of "USE_PLAYBIN" env variable.
https://bugzilla.gnome.org/show_bug.cgi?id=775469
Mathieu Duponchelle [Thu, 26 Oct 2017 16:05:31 +0000 (18:05 +0200)]
audioconvert: document passing an empty mix-matrix
Edward Hervey [Thu, 26 Oct 2017 13:55:32 +0000 (15:55 +0200)]
check: Fix minor leak
Edward Hervey [Thu, 26 Oct 2017 08:07:15 +0000 (10:07 +0200)]
oggdemux: Don't forget to reacquire lock when needed
Fixup to
ef93130cf04143fcf675b05ce0d19eddfbac4e75
I overlooked the issue. There is a case when the lock is released
and we need to reacquire it
Mathieu Duponchelle [Wed, 25 Oct 2017 15:45:44 +0000 (17:45 +0200)]
libgstvideo.def: add new definitions
Guillaume Desmottes [Wed, 25 Oct 2017 09:41:02 +0000 (11:41 +0200)]
videoencoder: add qos property
This new property control if the encoder base class should gather QoS
stats and if subclasses should use them by dropping late frames.
https://bugzilla.gnome.org/show_bug.cgi?id=789467
Ashish Kumar [Wed, 25 Oct 2017 07:17:40 +0000 (12:47 +0530)]
gst-plugins-base: gstaudiochannels: Handled buffer mapping failure
https://bugzilla.gnome.org/show_bug.cgi?id=789458
Edward Hervey [Tue, 24 Oct 2017 09:05:20 +0000 (11:05 +0200)]
oggdemux: Don't drop sticky events
Previous commit was wrong. We should still send all events to the
pad (so that sticky events get attached to it and sent when pad
gets added).
Edward Hervey [Tue, 24 Oct 2017 08:56:00 +0000 (10:56 +0200)]
oggdemux: Improve handling of EOS without source pads
We might have a chain to use, but it might not have any active pads
Properly detect that and send an error message on EOS
Matthew Waters [Sat, 21 Oct 2017 14:00:10 +0000 (01:00 +1100)]
Revert "videoencoder: flush encoder in transition PAUSED->READY"
This reverts commit
877664a414a466cfcc71c79d28c470722408c9a7.
Matthew Waters [Sat, 21 Oct 2017 14:00:08 +0000 (01:00 +1100)]
Revert "videodecoder: flush decoder in transition PAUSED->READY"
This reverts commit
6e9edc3031935ce8d6640d9774a7c093d20d4366.
Matthew Waters [Sat, 21 Oct 2017 14:00:06 +0000 (01:00 +1100)]
Revert "audioencoder: flush encoder in transition PAUSED->READY"
This reverts commit
2dcdd13512e788797d03f9990994eecdd339ca0e.
Matthew Waters [Sat, 21 Oct 2017 14:00:03 +0000 (01:00 +1100)]
Revert "audiodecoder: flush decoder in transition PAUSED->READY"
This reverts commit
e7cf4c058ddd466a797623b5ddf162c263d07059.
Edward Hervey [Sat, 21 Oct 2017 08:37:48 +0000 (10:37 +0200)]
win32: update exports file
Edward Hervey [Fri, 20 Oct 2017 16:40:42 +0000 (18:40 +0200)]
oggdemux: Error out on EOS if we have no chains to use
There are not active and pending chains, if we get EOS we need to
inform the user via an error message
Edward Hervey [Fri, 20 Oct 2017 16:40:02 +0000 (18:40 +0200)]
oggdemux: Don't double lock
The lock was already taken just before this block and is released after
Nicola Murino [Thu, 28 Sep 2017 11:17:05 +0000 (13:17 +0200)]
videoencoder: flush encoder in transition PAUSED->READY
https://bugzilla.gnome.org/show_bug.cgi?id=787311
Nicola Murino [Thu, 28 Sep 2017 11:12:58 +0000 (13:12 +0200)]
videoencoder: remove the lock from gst_video_encoder_flush
The lock is already taken before calling the flush method and can lead to
deadlock for some encoders that need to take the same lock from another
thread while flushing
https://bugzilla.gnome.org/show_bug.cgi?id=787311
Nicola Murino [Wed, 27 Sep 2017 14:08:10 +0000 (16:08 +0200)]
videodecoder: flush decoder in transition PAUSED->READY
https://bugzilla.gnome.org/show_bug.cgi?id=787311
Nicola Murino [Wed, 27 Sep 2017 14:32:13 +0000 (16:32 +0200)]
audioencoder: flush encoder in transition PAUSED->READY
https://bugzilla.gnome.org/show_bug.cgi?id=787311
Nicola Murino [Wed, 27 Sep 2017 14:41:51 +0000 (16:41 +0200)]
audiodecoder: flush decoder in transition PAUSED->READY
https://bugzilla.gnome.org/show_bug.cgi?id=787311
Guillaume Desmottes [Thu, 21 Sep 2017 13:18:10 +0000 (15:18 +0200)]
videoencoder: implement QoS
It allows encoders to detect and drop input frames which are already
late to increase the chance of the pipeline to catch up.
The QoS logic and code is directly copied from gstvideodecoder.c.
https://bugzilla.gnome.org/show_bug.cgi?id=582166
Guillaume Desmottes [Thu, 21 Sep 2017 14:52:29 +0000 (16:52 +0200)]
videoencoder test: properly name the encoder variable
The element is an encoder so calling it 'dec' makes things confusing.
https://bugzilla.gnome.org/show_bug.cgi?id=582166
Thibault Saunier [Mon, 16 Oct 2017 12:16:31 +0000 (14:16 +0200)]
doc: Add some missing/malformed Since markers
Mathieu Duponchelle [Wed, 11 Oct 2017 16:03:20 +0000 (18:03 +0200)]
audioconvert: allow empty mix matrix
When an empty mix matrix is passed, audio-channel-mixer
will now generate a (potentially truncated) identity matrix,
this replicates the behaviour of audiomixmatrix in first-channels
mode.
https://bugzilla.gnome.org/show_bug.cgi?id=788833
Mathieu Duponchelle [Wed, 11 Oct 2017 20:14:28 +0000 (22:14 +0200)]
Reorder win32 defs
Mathieu Duponchelle [Tue, 13 Jun 2017 00:18:19 +0000 (02:18 +0200)]
discoverer: output channel positions
https://bugzilla.gnome.org/show_bug.cgi?id=783722
Mathieu Duponchelle [Tue, 13 Jun 2017 00:32:09 +0000 (02:32 +0200)]
discoverer: output whether the uri is live
https://bugzilla.gnome.org/show_bug.cgi?id=783722
Mathieu Duponchelle [Tue, 13 Jun 2017 00:25:31 +0000 (02:25 +0200)]
API: gst_discoverer_info_get_live
https://bugzilla.gnome.org/show_bug.cgi?id=783722
Mathieu Duponchelle [Mon, 12 Jun 2017 23:40:44 +0000 (01:40 +0200)]
API: gst_discoverer_audio_info_get_channel_mask
https://bugzilla.gnome.org/show_bug.cgi?id=783722
Mathieu Duponchelle [Mon, 9 Oct 2017 16:13:27 +0000 (18:13 +0200)]
opusenc: Allow unpositioned channels.
The input will be treated as a set of mono channels,
and the channel-mapping-family will be set to 255
(no defined channel meaning)
https://bugzilla.gnome.org/show_bug.cgi?id=788720
Mathieu Duponchelle [Wed, 11 Oct 2017 14:57:28 +0000 (16:57 +0200)]
audio-converter: remove unused mix_matrix private field
Tim-Philipp Müller [Sat, 7 Oct 2017 13:20:54 +0000 (14:20 +0100)]
tests: appsink: fix compiler warning and typo in struct name
elements/appsink.c:624:3: warning: missing braces around initializer
with gcc 4.8.4
Thibault Saunier [Thu, 20 Apr 2017 20:42:17 +0000 (17:42 -0300)]
rtsp: Start implementing support for RTSP 2.0
Properly handle protocol version in the connection
Add the following headers types:
* Pipelined-Request
* Media-Properties
* Seek-Style
* Accept-Ranges
https://bugzilla.gnome.org/show_bug.cgi?id=781446
Havard Graff [Wed, 4 Oct 2017 12:17:59 +0000 (14:17 +0200)]
meson: remove vs_module_defs
GST_EXPORT should handle it.
Rico Tzschichholz [Thu, 5 Oct 2017 12:28:42 +0000 (14:28 +0200)]
meson: Add some missing args and dependencies in the gir generation
Reynaldo H. Verdejo Pinochet [Tue, 3 Oct 2017 21:31:18 +0000 (14:31 -0700)]
Use proper GtkDoc notation for NULL/FALSE/TRUE
Thibault Saunier [Fri, 29 Sep 2017 00:56:22 +0000 (21:56 -0300)]
meson: Add mssing GstBase-1.0 include in the gir generation
Sebastian Dröge [Thu, 28 Sep 2017 11:29:03 +0000 (14:29 +0300)]
audio: Fix unit test after changed GstAudioStreamAlign constructor signature
Sebastian Dröge [Wed, 13 Sep 2017 13:23:26 +0000 (16:23 +0300)]
audio: Add stream align API for getting timestamp at discont and number of samples since discont
https://bugzilla.gnome.org/show_bug.cgi?id=787560
Sebastian Dröge [Tue, 12 Sep 2017 13:03:44 +0000 (16:03 +0300)]
audio: Add reverse playback support to GstAudioStreamAlign
https://bugzilla.gnome.org/show_bug.cgi?id=787560
Sebastian Dröge [Mon, 11 Sep 2017 19:49:32 +0000 (22:49 +0300)]
audio: Add helper object for audio discontinuity detection and sample alignment
This is the same code that is in decklinkaudiosrc, audioringbuffer,
audiomixer and various other places. Have it once instead of copying it
everywhere.
https://bugzilla.gnome.org/show_bug.cgi?id=787560
Ponnam Srinivas [Mon, 25 Sep 2017 05:12:33 +0000 (10:42 +0530)]
alsasink: Fix Memory leak in payload not succuss case
https://bugzilla.gnome.org/show_bug.cgi?id=788114
Mathieu Duponchelle [Tue, 15 Aug 2017 00:39:54 +0000 (02:39 +0200)]
audioconvert: [API]: expose mix-matrix property.
This obsoletes audiomixmatrix
https://bugzilla.gnome.org/show_bug.cgi?id=785471
Mathieu Duponchelle [Thu, 27 Jul 2017 17:31:48 +0000 (19:31 +0200)]
[API]: GST_AUDIO_CONVERTER_OPT_MIX_MATRIX
Taken from audiomixmatrix, credits to Vivia Nikolaidou
https://bugzilla.gnome.org/show_bug.cgi?id=785471
Mathieu Duponchelle [Mon, 14 Aug 2017 23:29:57 +0000 (01:29 +0200)]
[API]: gst_audio_channel_mixer_new_with_matrix
+ Refactor previous constructor to call on that new constructor
+ Reimplement is_passthrough to strictly check whether the matrix
is an identity matrix, comparing channel-masks was incorrect:
the mixer may be remixing from a list of positions to the same
list of positions, but ordered differently, and reciprocally,
the mixer may be remixing from a list of positions to another
list of positions identically ordered
+ Remove unused tmp field, must have been a refactoring leftover
https://bugzilla.gnome.org/show_bug.cgi?id=785471
Mathieu Duponchelle [Mon, 14 Aug 2017 22:20:40 +0000 (00:20 +0200)]
audioconvert: refactor format removal.
remove_format_info was a bit confusing to read, this removes
it in favor of standard gst_caps_map_in_place calls.
This no longer simplifies the resulting caps, but I
consider this should be the job of basetransform.
https://bugzilla.gnome.org/show_bug.cgi?id=785471
Julien Isorce [Thu, 24 Aug 2017 09:02:31 +0000 (10:02 +0100)]
appsink: on drain wait for buffers to be consumed
So that an upstream element can claim all buffers to return to its buffer pool.
Added unit test 'test_query_drain'
make elements/appsink.check
https://bugzilla.gnome.org/show_bug.cgi?id=786739
Julien Isorce [Mon, 18 Sep 2017 16:06:32 +0000 (17:06 +0100)]
appsink: also clear preroll buffer in _pull_sample
If someone calls gst_app_sink_try_pull_sample they are
probably no longer interested in any preroll samples.
Useful if the user has not registered a preroll appsink callback.
Also added unit test 'test_do_not_care_preroll'
make elements/appsink.check
that fails without this patch.
https://bugzilla.gnome.org/show_bug.cgi?id=786740
Julien Isorce [Tue, 29 Aug 2017 08:47:51 +0000 (09:47 +0100)]
appsink: unref preroll buffer upon pull
There is no reason for appsink to hang onto the preroll buffer.
If needed, the application can just keep a ref on this buffer
after calling gst_app_sink_try_pull_preroll.
Also added unit test 'test_pull_preroll'
make elements/appsink.check
https://bugzilla.gnome.org/show_bug.cgi?id=786740
Julien Isorce [Wed, 13 Sep 2017 13:06:43 +0000 (14:06 +0100)]
appsink: rename GstBuffer *preroll to preroll_buffer
priv->preroll can be confused with basesink_class->preroll
https://bugzilla.gnome.org/show_bug.cgi?id=786740