Commit graph

102 commits

Author SHA1 Message Date
Douglas Bagnall
a9f26c2a14 interleave: avoid using uninitialised ordering_map
If self->channel_positions == NULL (which seems unlikely),
self->default_channels_ordering_map will be used unintialised.

We avoid that by keeping track of the channel_mask, which is set when
the ordering map is initialised.

https://bugzilla.gnome.org/show_bug.cgi?id=780331
2017-03-31 14:10:34 +03:00
Douglas Bagnall
c08d719453 interleave: don't overflow channel map with >64 channels
When there are more than 64 channels, we don't want to exceed the
bounds of the ordering_map buffer, and in these cases we don't want to
rempa at all. Here we avoid doing that.

https://bugzilla.gnome.org/show_bug.cgi?id=780331
2017-03-31 14:10:34 +03:00
Sebastian Dröge
4f426f6f54 deinterleave: Reset caps accumulator to ANY when resyncing the adapter, not EMPTY
The accumulator is filled by intersecting with all the pad caps, as such
it must be initialized with ANY (like it is before the iteration is
started) and not to EMPTY.

Fixes the CAPS query always returning EMPTY caps when resyncing happened
during the query, e.g. because pads were added/removed.
2016-11-14 17:37:51 +02:00
Nirbheek Chauhan
b09f478e80 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:21:12 +01:00
Sebastian Dröge
239cf06d81 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
2016-03-24 14:47:40 +02:00
Vineeth TM
1071309870 good: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Sebastian Dröge
605175b8c4 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
2016-03-17 21:12:29 +02:00
Tim-Philipp Müller
13a9a7543d win32: remove outdated build cruft
This hasn't been touched for generations, doesn't work,
and is just causing confusion. We also don't want to
maintain these files manually.
2016-02-21 09:47:43 +00:00
Antonio Ospite
bdcc0390af interleave: Fix the example by setting channel-masks in the sink pads
The current example does not work, it fails with:

ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0: Internal data flow error.
gstwavparse.c(2178): gst_wavparse_loop (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0:
streaming task paused, reason not-negotiated (-4)

This is because negotiation with wavenc gets messed up by the missing
channel positions configuration.

The proper way to define the channel layout when using the interleave
element in code would be to set the channel-positions property, but
gst-launch-1.0 does not know how to deal with arrays; so the example
pipeline works around the issue by setting the channel-masks in the sink
pads.

Also fix a repetition in the deinterleave example description

https://bugzilla.gnome.org/show_bug.cgi?id=735673
2016-01-12 22:11:30 +00:00
Ravi Kiran K N
34b26ea0cc interleave: Remove unsed field
Remove unused field collect_event in interleave.

https://bugzilla.gnome.org/show_bug.cgi?id=759226
2015-12-09 11:17:25 +02:00
Thiago Santos
5c7b051b90 deinterleave: implement accept-caps
Avoid using default accept-caps handler that will query downstream
and is more expensive. Just check if the caps is compatible with
the template and check if the channels are the same.
2015-09-30 17:35:33 -03:00
Thiago Santos
b71d9b1783 deinterleave: use the caps query filter
It was being ignored and would lead to wrong results if the
element doing the query would rely on the intersection being made.
2015-09-30 12:48:30 -03:00
Thiago Santos
74c05502f7 deinterleave: implement a caps query handler for the sinkpad
It was missing and apparently code relied on having it there
for not allowing a change in the number of channels
2015-09-30 12:48:30 -03:00
Thiago Santos
ad5bc461c8 deinterleave: fix caps leak
Caps from the pad template are being leaked. In any case it is
from a static pad template and will 'leak' in the end, just doing
the cleanup for the good practice.
2015-09-30 12:47:52 -03:00
Vineeth TM
0e5631c5c0 interleave: error when channel-positions-from-input=False
self->channels is being incremented only when
channel-positions-from-input is set as TRUE. So in case of FALSE
self->func is not set and hence creating assertion error.
Hence removing the condition to increment self->channels.

https://bugzilla.gnome.org/show_bug.cgi?id=744211
2015-06-05 08:48:25 -03:00
Tim-Philipp Müller
d753a3eeb1 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:55:07 +01:00
Arun Raghavan
0c06553fb2 interleave: Drop custom latency query handling
This is implemented by the default query handler now.
2015-02-27 00:59:43 +05:30
Sebastian Dröge
f4b5107796 Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 13:53:02 +01:00
Tim-Philipp Müller
401782c19d interleave: intersect result with filter caps in caps query
Fixes crash in audiotestsrc because of an unsupported format
getting negotiated on big-endian systems with
audiotestsrc ! interleave ! audioconvert ! wavenc
2014-10-25 11:08:48 +01:00
Antonio Ospite
7ae7f657fa interleave: interleave samples following the Default Channel Ordering
In order to have a full mapping between channel positions in the audio
stream and loudspeaker positions, the channel-mask alone is not enough:
the channels must be interleaved following some Default Channel Ordering
as mentioned in the WAVEFORMATEXTENSIBLE[1] specification.

As a Default Channel Ordering use the one implied by
GstAudioChannelPosition which follows the ordering defined in SMPTE
2036-2-2008[2].

NOTE that the relative order in the Top Layer is not exactly the same as
the one from the WAVEFORMATEXTENSIBLE[1] specification; let's hope users
using so may channels are already aware of such discrepancies.

[1] http://msdn.microsoft.com/en-us/library/windows/hardware/dn653308%28v=vs.85%29.aspx
[2] http://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BS.2159-2-2011-PDF-E.pdf

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=737127
2014-10-02 10:21:26 +03:00
Philippe Normand
b8b5704445 interleave: set output caps layout to interleaved
Set output caps layout independently from input caps layout which can
be either non-interleaved or interleaved.

https://bugzilla.gnome.org/show_bug.cgi?id=733866
2014-07-29 11:49:32 +02:00
Vincent Penquerc'h
e526412afa interlace: catch failure to create audio info from caps
Coverity 1139627, 1139628
2014-04-21 17:21:20 +01:00
Sebastian Dröge
b038fd4eff interleave: Fix negotiation to work at all again
The caps query handling function for the sinkpads was called for
the srcpad, and the sinkpads had none. This commit moves it to the
right pad, but nonetheless the negotiation still looks wrong.

This makes the test pass again after the recent coverity fix
and also allows interleave to work again, but someone should
really review the negotiation code and fix it.
2014-04-15 21:36:30 +02:00
Edward Hervey
9859515605 interleave: Add missing break in switch statement
The caps query is handled entirely already before.

CID #1139757
2014-04-08 11:31:06 +02:00
Sebastian Dröge
5f6469fe2a deinterleave: Don't hold object lock while sending events downstream
Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=703114
2013-07-01 11:37:00 +02:00
Nicolas Dufresne
f67c227878 interleave: Send stream-start before caps event 2013-05-13 15:37:38 +02:00
Sebastian Dröge
0ab23ef5c9 deinterleave: Fix sticky event handling 2013-05-13 14:54:35 +02:00
Sebastian Dröge
c94fbf6206 deinterleave: Code style fixes 2013-05-13 13:55:44 +02:00
Sebastian Dröge
b0b0557c48 gst: Add better support for static plugins 2013-04-15 15:54:11 +02:00
Philippe Normand
2bd77e1c8a interleave: set src pad caps upon last sink pad CAPS event
Gather caps on all sink pads before setting the src pad caps. This is
specially needed when the audio channel mapping is set on the sink
pads and the element needs to preserve it on its src pad.

https://bugzilla.gnome.org/show_bug.cgi?id=690267
2012-12-18 12:58:43 +01:00
Philippe Normand
a8fa9f2b47 deinterleave: properly set srcpad channel position
The src pad caps always describe a single audio channel so only the
first position matters if deinterleave is configured to keep channel
positions in its src pads.
2012-12-12 11:20:56 +00:00
Tim-Philipp Müller
230cf41cc9 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Michael Smith
7aed5a4b4b deinterleave: output channels should be marked as MONO, not FRONT_LEFT, if
we're not preserving input channel positions.
2012-10-05 15:12:27 -07:00
Michael Smith
7522cd1595 interleave: use gst_audio_channel_positions_to_mask instead of a local copy
of half of it. Handles some values more correctly.
2012-10-04 15:13:20 -07:00
Michael Smith
b04b1b5089 meta info: threadsafe registration using g_once 2012-10-03 10:51:45 -07:00
Tim-Philipp Müller
ea7f8a919c interleave: add a bunch of FIXMEs
Needs some more work, so stream-start, caps and tags are
sent in the right order.
2012-09-23 16:33:35 +01:00
Stefan Sauer
f874922e1c collectpads: remove gst_collect_pads_add_pad_full
Rename gst_collect_pads_add_pad_full() to gst_collect_pads_add_pad() and fix all
invocations.
2012-09-12 21:05:44 +02:00
Tim-Philipp Müller
4bb52bbadf docs: gst-launch -> gst-launch-1.0 and ffmpegcolorspace -> videoconvert 2012-08-27 21:20:30 +01:00
Wim Taymans
ec7f7264dc interleave: convert the output segment to time
Convert the stored input segment to time before pushing it out.

Conflicts:

	gst/interleave/interleave.c
2012-07-20 16:09:33 +02:00
Wim Taymans
4dfb796527 interleave: try to fix segment handling
Conflicts:

	gst/interleave/interleave.c
2012-07-20 15:54:38 +02:00
Tim-Philipp Müller
42cc0d1e48 deinterleave; downgrade caps change failure debug message
Add some more info and downgrade to warning, so
it doesn't look like the unit test failed.
2012-07-03 19:44:26 +01:00
Wim Taymans
354e35a6ee interleave: fix compilation again 2012-05-09 11:19:10 +02:00
Wim Taymans
01db5dbff0 interleave: handle EOS on all pads
When all pads go to EOS immediately, we are not negotiated and our collected
function is called (without any available data). Handle this case gracefully.

Conflicts:

	gst/interleave/interleave.c
2012-05-01 13:35:56 +02:00
Wim Taymans
e0636feff8 interleave: improve debugging 2012-05-01 13:34:32 +02:00
Mark Nauwelaerts
67e168aef4 collectpads2: rename to collectpads 2012-04-17 15:14:27 +02:00
Mark Nauwelaerts
04b4d30f2c misc: chain up to collectpads event handler 2012-04-16 16:37:49 +02:00
Tim-Philipp Müller
e09ae5736d Use new gst_element_class_set_static_metadata() 2012-04-10 00:51:41 +01:00
Tim-Philipp Müller
fa5edd2680 interleave: make channel-poisitions property a GValueArray again
Or perhaps it should just be a guint64 channel mask, which would
be nicer in C, but more awkward for bindings (even more so since
we can't add a flags type for it, since that only supports guint
size flags). Fixes wavenc unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=669643
2012-04-09 11:13:05 +01:00
Sebastian Dröge
aa2cd462da gst: Update for GST_PLUGIN_DEFINE() API changes 2012-04-05 17:36:38 +02:00
Sebastian Dröge
5cdd49bf25 gst: Update versioning 2012-04-04 14:37:47 +02:00