Commit graph

8235 commits

Author SHA1 Message Date
Tim-Philipp Müller
25bf82a187 meson: fix tests build with --werror
Need to pass -DGST_DISABLE_DEPRECATED to avoid warnings when
testing deprecated API such as gst_uri_construct().

Also remove #ifndef GST_DISABLE_DEPRECATED guard from header
file, we don't use those any more for functions, the
GST_DEPRECATED_FOR macro is enough.
2017-06-15 10:53:11 +01:00
Dimitrios Katsaros
688d79033f gsturi: Fixed incorrect escaping of path as a generic string
The gst_uri_construct function was escaping the location string
as a generic uri string. This is incorrect since the slash('/')
characters are reserved for use in this exact case. The patch
changes the escape_string function mode to handle the path correctly.

I have deleted the escape_string function since it is no longer being
used and have created a unit test for the function. I have also
deprecated this function in favour of the GstUri API.

https://bugzilla.gnome.org/show_bug.cgi?id=783787
2017-06-15 11:39:00 +03:00
Sebastian Dröge
5f5caffa70 bin: Put correct annotations on gst_bin_add() too 2017-05-31 20:40:00 +03:00
Sebastian Dröge
3a23b518d4 object: Add missing annotations to get_value_array() / get_value_g_array()
Same as already used in GstControlBinding.
2017-05-22 12:01:41 +03:00
Sebastian Dröge
d4f2ae611b protection: Fix annotations for gst_protection_select_system() 2017-05-21 19:17:15 +03:00
Olivier Crête
156ce96296 plugin: Stop plugin symbol name at first .
This is because the python plugin ends up named
libgstpython.cpython-35m-x86_64-linux-gnu.so so we need to stop
at the first dot.

https://bugzilla.gnome.org/show_bug.cgi?id=782924
2017-05-21 17:06:24 +02:00
Tim-Philipp Müller
f6b42d1f56 meson: don't need config.h.meson any more
Meson does the largefile support automatically nowadays, and
can generate a config.h from configuration_data() without a
template as input.
2017-05-21 14:31:56 +01:00
Sebastian Dröge
f322740ef9 parse: Make gst_parse_context_copy() public for bindings 2017-05-20 19:43:18 +03:00
Matthew Waters
e3ab5e4df9 debugutils: add missing E character to the legend
The E character on pads indicates the presence of the EOS flag.
2017-05-19 19:22:27 +02:00
Matej Knopp
d59e26d37d gst-plugin: allow '-' in plugin file name
'-' will be translated to underscore when determining symbol name

https://bugzilla.gnome.org/show_bug.cgi?id=782756
2017-05-17 20:55:18 -04:00
Christoph Reiter
9bf46a1065 gst: ref_sink() some more floating references returned by g_object_new()
https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 15:36:12 +03:00
Sebastian Dröge
f119e93b47 gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent
I.e. most of them unfortunately.

https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:37 +03:00
Sebastian Dröge
888fc33bc2 allocator: ref_sink() the global sysmem allocator after creation
It's not owned by the first one to ask for it, but by this very code.

https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:37 +03:00
Sebastian Dröge
daa98fc02a gst: Don't ref_sink() GstObject subclasses in instance_init/constructor
This is something bindings can't handle and it causes leaks. Instead
move the ref_sink() to the explicit, new() constructors.

This means that abstract classes, and anything that can have subclasses,
will have to do ref_sink() in their new() function now. Specifically
this affects GstClock and GstControlSource.

https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:37 +03:00
Sebastian Dröge
30f871d274 gst: Correctly annotate functions taking floating reference parameters and returning floating references
https://bugzilla.gnome.org/show_bug.cgi?id=702960
2017-05-17 10:40:37 +03:00
Sebastian Dröge
2e4c82d850 gst: Handle floating references consistently
If a function takes a floating reference parameter, it should also be
sinked in error cases. Otherwise the function behaves differently
between error and normal cases, which is impossible for bindings to
handle.

https://bugzilla.gnome.org/show_bug.cgi?id=747990
2017-05-17 10:40:37 +03:00
Vineeth TM
7c4d3a6c52 gst: Fix floating reference inconsistencies in error cases
If a function takes a floating reference and sinks it, it should also do
that in error cases. I.e. call ref_sink() followed by unref().

Otherwise the reference counting behaviour of the function will be
different between the good and the error case, and simply inconsistent.

https://bugzilla.gnome.org/show_bug.cgi?id=747990
2017-05-17 10:40:37 +03:00
Nicolas Dufresne
eafaefe9da Also use default visibility for plugins symbol 2017-05-16 13:31:06 -04:00
Tim-Philipp Müller
5fd554aa34 gstconfig.h: use default visibility for GST_EXPORT for gcc/clang too
This will be needed later when we switch to using -fvisibility=hidden.
2017-05-15 23:14:20 +01:00
Tim-Philipp Müller
0eecc49c13 gst: add GST_DEPRECATED_FOR() and also export deprecated symbols
Can't use a #ifndef GST_DISABLE_DEPRECATED guard around deprecated
functions any more, as they won't get exported then. Besides, we
get a nicer error message from the compiler telling us what function
to use instead this way.
2017-05-15 23:14:20 +01:00
Tim-Philipp Müller
92d3246f76 gst: mark symbols explicitly for export with GST_EXPORT
One omission: gst_allocator_sysmem_get_type() was
exported but never in any public header file.
2017-05-15 23:14:12 +01:00
Sebastian Dröge
7d930b8693 buffer: Add GstReferenceTimestampMeta
This is a meta that generically allows to attach additional reference
timestamps to a buffer, that don't have to relate to the pipeline clock
in any way.

Examples of this could be an NTP timestamp when the media was captured,
a frame counter on the capture side or the (local) UNIX timestamp when
the media was captured.

https://bugzilla.gnome.org/show_bug.cgi?id=779213
2017-05-12 11:43:02 +02:00
Sebastian Dröge
c77f661f6d bus: Add function to get the file descriptor of the bus
This is useful for integration with other event loops that work by
polling file descriptors. G_IO_IN will always be set whenever a message
is available currently.

https://bugzilla.gnome.org/show_bug.cgi?id=776126
2017-05-09 15:01:46 +02:00
Nicolas Dufresne
e7ede5a487 plugin: Unify static and dynamic plugin interface
This patch changes the entry point of each plugin in order to unify the
interface for static and dynamic plugin. What we do is replace the
current static plugin interface and extend the dymamic one. The plugin
entry was a C structure, name "gst_plugin_desc". With this patch, the
interface is now:

  GstPpluginDesc *gst_plugin_<name>_get_desc(void);

The reason we change the C structure into function, is that it is
potentially more common to have function pointers, avoiding possible
binding language limitation. Additionally to that. This change prevents
the symbols from clashing between plugins, allowing to build once the
plugin (assuming you have -fPIC).

On the plugin loader side, we symply derive the shared object basename
to extract the plugin name. If this symbol is not found, we fallback to
gst_plugin_desc for backward compatibility.

This has one side effect, which is that the shared objects now need to
be named after their plugin name. This is generally the case with few
exceptions. The benifit of this limitation is that you can control the
gst_plugin_<name>_desc clash at file level.

https://bugzilla.gnome.org/show_bug.cgi?id=779344
2017-05-09 08:48:19 -04:00
Tim-Philipp Müller
4425f8c368 debugutils: make local variable static 2017-05-07 11:17:22 +01:00
Tim-Philipp Müller
dcfb222e05 meson: add gst-ptp-helper
https://bugzilla.gnome.org/show_bug.cgi?id=774418
2017-05-05 11:49:08 +01:00
Tim-Philipp Müller
3d8d81ecb7 g-i: no need to load registry in g-i scanner 2017-05-04 21:59:48 +01:00
Sebastian Dröge
cd3a49b69b message: Don't pass a NULL debug string to g_utf8_validate()
g_utf8_validate() crashes on NULL, but NULL is valid for the debug
string nonetheless.
2017-05-02 14:35:50 +03:00
Víctor Manuel Jáquez Leal
d108ed2251 gst: check non-null before dereference
It is possible to use gst_deinit() without registering the base
classes. For example, when using gst_init_get_option_group() and
call the program with an invalid parameter. In that case,
gst_deinit() will lead to a segmentation fault, since there is a
dereference to a pointer that is null.

This patch validates if the type is non-null before dereferencing
it.

https://bugzilla.gnome.org/show_bug.cgi?id=781914
2017-04-28 21:01:43 +02:00
Thibault Saunier
b15d59b53c doc: Fix some doctsing making GI happy 2017-04-21 10:51:59 -03:00
Thibault Saunier
e6db45a8af doc: Fix GstChangeState docstring 2017-04-20 17:58:08 -03:00
Sebastian Dröge
04676df4a8 info: Move debug output in for_each_threshold_by_entry() to TRACE level
It's otherwise appearing many, many times in logs and usually is nothing
you're interested in.
2017-04-19 17:32:17 +01:00
Rico Tzschichholz
72e42f0ce9 meson: A couple for GIR-generation fixes 2017-04-13 10:05:53 +01:00
Olivier Crete
7c01da8476 meson: Only check the first parameter
https://bugzilla.gnome.org/show_bug.cgi?id=781155
2017-04-11 13:24:45 -03:00
Thibault Saunier
57fd614e02 meson: Check bison and flex are recent enough
https://bugzilla.gnome.org/show_bug.cgi?id=781155
2017-04-11 10:59:34 -03:00
Olivier Crête
dd1f0f49ab value: Accept NULL as a structure
Some GstStructure properties default to NULL, so it should
be a supported value.

With unit test.
2017-04-10 12:37:12 -04:00
Tim-Philipp Müller
519d64881f Don't use deprecated g_object_newv()
Use g_object_new() instead which nowadays has a shortcut for the
no-properties check. It still does an extra GType check in the
function guard, but there's a pending patch to remove that
and it's hardly going to be a performance issue in practice,
even less so on a system that's compiled without run-time checks.

Alternative would be to move to the new g_object_new_properties()
with a fallback define for older glib versions, but it makes the
code look more unwieldy and doesn't seem worth it.

Fixes deprecation warnings when building against newer GLib versions.

https://bugzilla.gnome.org/show_bug.cgi?id=780903
2017-04-08 09:49:59 +01:00
Olivier Crête
0b9eb621b6 structure: Don't print warning on NULL strings or pointers
Putting NULL for those is a valid serialization for the NULL value.
2017-04-06 19:25:06 -04:00
Sebastian Dröge
c173771ed2 gst: Use GstClockTimeDiff instead of GstClockTime as type for GST_SECOND and friends
They were (signed!) gint64 before because of G_GINT64_CONSTANT() already
and they are actually used in signed calculations.

With this change we at least ensure that an integer type of the correct
size is used for GI (it was using gint before).
2017-04-05 16:32:38 +03:00
Sebastian Dröge
ddd00c0d2f gst: Update some more types and values of combined-flags constants 2017-04-05 15:46:26 +03:00
Sebastian Dröge
42a8ffcd39 gst: Cast combined-flags constants to their respective target types
This makes C++ compilers a bit more happy without having the user of the
constants cast. It also provides the correct type information to GI.

https://bugzilla.gnome.org/show_bug.cgi?id=780923
2017-04-05 14:45:46 +03:00
Sebastian Dröge
d96c201f5f gst: Set values and types for combined-flags constants in GI annotations 2017-04-05 14:42:16 +03:00
Sebastian Dröge
5399b29979 value: Properly set value and type for GST_FLAG_SET_MASK_EXACT in GI annotations
Storing a -1 inside an unsigned integer confuses GIR based bindings
generators.
2017-04-05 14:27:19 +03:00
Vincent Penquerc'h
c361365890 gstvalue: fix GstValue leak in structure_field_union_into
https://bugzilla.gnome.org/show_bug.cgi?id=780751
2017-03-31 11:57:36 +01:00
Vincent Penquerc'h
efbacf1931 streamcollection: fix racy user-after-free
The issue happens when the structure is printed by the logging
subsystem: the object is included in the log, and this will cause the
full object printout to be done there. However, after dispose, the queue
was already cleared, so the access to it (to print the object) would
assert, as the queue was already freed. The patch changes it so that the
queue is merely empty, and only freed in _finalize.

https://bugzilla.gnome.org/show_bug.cgi?id=776293
2017-03-31 11:32:31 +01:00
Tim-Philipp Müller
d8a1bf08b1 debugutils: add pad EOS flag in pipeline dot file dumps
But only if set. Helps debug issues with EOS propagation.
2017-03-27 18:30:35 +01:00
Nicolas Dufresne
1a65d5b252 paramspec: Fix array validation logic
A paramspec validation should modify the content to match what the spec
requires and return TURE if a modification happened. This previous
implementation would only fix the first element of the array and return.
It was also return TRUE for empty array, while no modification was
needed.

https://bugzilla.gnome.org/show_bug.cgi?id=780111
2017-03-24 13:43:34 -04:00
Nicolas Dufresne
3b9ff1245b array/fraction: In param types, use get_type() function directly
The GST_TYPE macro points to global variables initialized by the
first call to get_type. This is not an issue if you call gst_init()
but unfortunatly pygi will need to acces the param type before
init can be called. This removes an assertion.
2017-03-24 13:30:45 -04:00
Nicolas Dufresne
d486074a9c fraction/array: Make get_type() thread safe
Those aren't suppose to be called from multiple thread, but all
fundamental get_type() function are thread safe. Fix it to
be consistent and it may help if we change the typing mechanism
in GStreamer come day.
2017-03-24 13:30:45 -04:00
Nicolas Dufresne
2c056563bf gstutils: Add helpers to get/set array properties
This is to help bindings access properties of type GST_TYPE_ARRAY.
This function will get/set the property and convert form/to
GValueArray.

New API:
  gst_util_set_object_array
  gst_util_get_object_array

https://bugzilla.gnome.org/show_bug.cgi?id=753754
2017-03-24 13:30:45 -04:00