Commit graph

8837 commits

Author SHA1 Message Date
Nicolas Dufresne
7595c38a73 paramspec: Move condition check inside the g_return
It's mostly a debug check and crash avoidance, it's better to
keep all the condition inside the macro.
2017-11-10 12:09:41 -05:00
Nicolas Dufresne
98f4ff8331 paramspec: Add missing since for _spec_array() 2017-11-10 12:09:41 -05:00
Tim-Philipp Müller
d106390adc element: add gst_element_foreach_*pad()
Add convenience API that iterates over all pads, sink pads or
source pads and makes sure that the foreach function is called
exactly once for each pad.

This is a KISS implementation. It doesn't use GstIterator and
doesn't try to do clever things like resync if pads are added
or removed while the function is executing. We can still do that
in future if we think it's needed, but in practice it will
likely make absolutely no difference whatsoever, since these
things will have to be handled properly elsewhere by the element
anyway if they're important.

After all, it's always possible that a pad is added or removed
just after the iterator finishes iterating, but before the
function returns.

This is also a replacement for gst_aggregator_iterate_sink_pads().

https://bugzilla.gnome.org/show_bug.cgi?id=785679
2017-11-02 15:59:22 +00:00
Edward Hervey
fb56ad6bee gstvalue: Cast GST_MAKE_FOURCC arguments
To make it explicit that we are dealing with uint32 targets

Avoids erroneous  runtime error: left shift of negative value -1

https://bugzilla.gnome.org/show_bug.cgi?id=789700
2017-10-31 12:02:18 +01:00
Edward Hervey
c0c9a531ef event: Don't allow invalid SELECT_STREAMS event creation
Asking to select no streams makes no sense and can create various
issues.

If one doesn't one any stream it should deactivate (or not use) the
element in question.
2017-10-27 09:53:06 +02:00
Edward Hervey
4844adf193 gst: Fix build with option parsing disabled 2017-10-25 17:10:15 +02:00
Stefan Sauer
05ce354d3e segment: clarify the segment docs for the duration 2017-10-20 16:15:01 +02:00
Stefan Sauer
38dd43df29 Revert "segment: also intialize the duration"
This reverts commit f1baaae175.
2017-10-20 16:11:44 +02:00
Stefan Sauer
f1baaae175 segment: also intialize the duration
If start and stop are set, calculate the duration and set it too.
2017-10-20 14:30:42 +02:00
Jan Schmidt
6adb6b478f seqnum: Never return a seqnum of 0, reset GST_SEQNUM_INVALID
Various plugins use the value of '0' as an invalid seqnum value
(qtdemux for matching duplicated seek events, for example). Make
that behaviour explicit, create a GST_SEQNUM_INVALID value,
and ensure gst_util_seqnum_next never returns it.
2017-10-18 02:31:12 +11:00
Mathieu Duponchelle
e838007d09 gstbuffer: fix meta removal in gst_buffer_foreach_meta
When updating the linked list, prev->next = next is correct
if prev is actually updated after being set to the head
of the list at the start.

https://bugzilla.gnome.org/show_bug.cgi?id=788617
2017-10-11 19:57:04 +02:00
Ashish Kumar
0ca70247fc device-provider: gst_device_provider_unhide_provider() always fails
https://bugzilla.gnome.org/show_bug.cgi?id=788520
2017-10-05 09:42:39 +01:00
Havard Graff
fee176d253 meson: remove vs_module_defs
The GST_EXPORT should handle it.
2017-10-05 09:35:41 +01:00
Edward Hervey
ebad8c0094 bin: iterate_sorted: Ensure sources are always returned last
For linked elements, the resulting gst_bin_iterate_sorted() will
properly return elements from sink to sources.

If we have some elements that are not linked, we *still* want to
ensure that we return:
* In priority any sinks
* Last of all any sources
* And in between any element which is neither source nor sink

For this to work, when looking for the next candidate element,
not only check the degree order, but if there are two candidates
with the same degree order, prefer the non-source one.

Amongst other things, this fixes the case where we activating a
bin containing unlinked sources and other elements. Without this
we could end up activating sources (which might start adding pads
to be linked) before other (to which those new source element pads
might be linked) are not activated

https://bugzilla.gnome.org/show_bug.cgi?id=788434
2017-10-03 07:56:39 +02:00
Stefan Sauer
eb329eec1c structure: add a todo comment
Printing NULL is confusing when the type is e.g. a GArray that is not empty.
2017-10-02 16:23:31 +02:00
Stefan Sauer
e584886d06 query: doc consistency
Mention that it is the 'buffer size', like we do elsewhere.
2017-10-02 13:14:21 +02:00
Mathieu Duponchelle
2138acabe5 gst: Modify behaviour of gst_get_main_executable_path
To actually return the path of the executable, not its
directory.

https://bugzilla.gnome.org/show_bug.cgi?id=788256
2017-09-27 20:59:54 +02:00
Mathieu Duponchelle
895bb7bcd6 gst: API: gst_get_main_executable_path()
This is useful for plugins that need to inspect the
folder of the main executable in order to determine the
set of features they will expose, for example:

https://github.com/centricular/gstreamer-vst3

https://bugzilla.gnome.org/show_bug.cgi?id=788214
2017-09-27 20:59:54 +02:00
Mathieu Duponchelle
49e230ad1a gst: Do not try to determine executable path on iOS.
The method used relies on "libproc.h", which is only available
on OSX.

https://bugzilla.gnome.org/show_bug.cgi?id=788234
2017-09-27 13:56:15 +02:00
Mathieu Duponchelle
c9815957d3 gst: Fix typo in windows function name.
GetModuleFilename -> GetModuleFileName

https://bugzilla.gnome.org/show_bug.cgi?id=788234
2017-09-27 13:56:15 +02:00
Mathieu Duponchelle
a5e168071c plugin dependencies: fix 6cddce7663
There were a few errors:

* The plugin scanner now accepts executable path as an argument.
  In case it is NULL, argc == 2

* We find the executable path in init_pre instead of gst_init,
  allowing this to work when gst is initialized through the
  option group (eg gst-inspect)

* There was a semi-colon missing in the __APPLE__ #ifdef
2017-09-26 15:15:27 +02:00
Mathieu Duponchelle
6cddce7663 plugin: API: GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE
When a plugin declares a dependency using this flag, all the
relative paths are considered to be relative to the path of
the main executable.

We try to determine the path of the executable portably,
with implementations provided for Linux, Windows and Mac.

If retrieval of the path fails, we will not detect changes.

In order for the main executable path to be the same when
scanning a plugin in a child process, a new variable is
exposed in gst_private.h, _gst_executable_path

https://bugzilla.gnome.org/show_bug.cgi?id=788152
2017-09-26 13:12:00 +02:00
Sebastian Dröge
f649f0a44f info: GstStackTraceFlags were added in 1.12 2017-09-17 18:55:43 +03:00
Tim-Philipp Müller
8f26af8b02 bufferlist: add gst_buffer_list_calculate_size()
Returns size in bytes.
2017-09-17 12:35:25 +01:00
Tim-Philipp Müller
177c4ffe6a bufferlist: add gst_buffer_list_get_writable()
Ensures buffer is writable. Useful if we want to change
metadata on it such as timestamps.

https://bugzilla.gnome.org/show_bug.cgi?id=750241
2017-09-17 12:24:25 +01:00
Michael Shigorin
9cd8fae44d gstconfig.h.in: initial e2k arch support
This makes gstreamer buildable on Elbrus 2000.

https://bugzilla.gnome.org/show_bug.cgi?id=787587
2017-09-12 14:01:57 -04:00
Sebastian Dröge
870a387e5d info: GstDebugColorFlags are flags, not an enum
Annotate as such.
2017-09-09 16:14:30 +03:00
Edward Hervey
aed32ee2ab pad: Don't call remaining probes after they return DROPPED|HANDLED
If multiple probes are set on a pad and one probe returns either
GST_PAD_PROBE_HANDLED or GST_PAD_PROBE_DROPPED we need to stop
calling the remaining probes.

https://bugzilla.gnome.org/show_bug.cgi?id=787243
2017-09-04 14:37:42 +02:00
Thibault Saunier
996bedb81d value: Handle serializing NULL GValueArray
Concider them as an empty array and do not segfault...

https://bugzilla.gnome.org/show_bug.cgi?id=786670
2017-08-26 13:46:58 -03:00
Sebastian Dröge
0459b2db84 element/deviceprovider: Add instance getter functions for class properties
That is, the metadata and pad templates. Using instance getters is
easier to deal with for bindings, especially autogenerated ones.
2017-08-17 14:13:39 +03:00
Tim-Philipp Müller
e7996a23d6 allocator: Hide private sysmem GType func
Was never exposed in any header file, only exported
by accident.
2017-08-14 11:01:44 +01:00
Tim-Philipp Müller
b1422a2fb8 utils: fix g-ir-scanner warning about bogus transfer annotations
for vararg parameters. Vararg functions are not introspectable anyway,
so might just as well mark them as '(skip)' while we're at it.

gstutils.c:2611: Warning: Gst: invalid "transfer" annotation for <varargs>: only valid for object and GVariant types
2017-08-10 10:30:59 +01:00
Sebastian Dröge
849dfe82f1 utils: Skip gst_calculate_linear_regression() in bindings 2017-08-08 21:20:31 +03:00
Tim-Philipp Müller
24880717cf meson: fix a few warnings 2017-08-07 11:06:58 +01:00
Sebastian Dröge
087eca8827 pad: Recheck sticky events after non-blocking buffer probes and blocking event probes
Without the former, event changes (e.g. setting a pad offset) does not
take effect for the current buffer but only for the next one. Without
the latter, non-blocking event probes would not see any updated events
yet.
2017-08-02 21:02:32 +03:00
Tim-Philipp Müller
a79503a433 info: fix build with gst debugging disabled 2017-07-29 10:28:03 +01:00
Sebastian Dröge
ad0dd860c9 debug: Add a memory ringbuffer based debug logger
This stores debug logs in memory per thread and uses up to a
configurable amount of bytes per thread for the logs. Inactive threads
are timed out after a configurable amount of time.

https://bugzilla.gnome.org/show_bug.cgi?id=785035
2017-07-28 17:27:51 +01:00
Sebastian Dröge
0bf3531efa segment: Add missing out annotations for various parameters 2017-07-28 17:27:32 +01:00
George Kiagiadakis
4c3092e07a element: document that gst_element_continue_state needs to be called with the STATE_LOCK
It internally calls gst_element_change_state(), which requires the STATE_LOCK

https://bugzilla.gnome.org/show_bug.cgi?id=785431
2017-07-26 12:36:20 +03:00
Tim-Philipp Müller
ea62c96b94 miniobject: don't modify memory if it's clearly not a valid miniobject
Add back function guard that checks the refcount in a read-only
operation first, and bail out without modifying the passed-in
memory if it's clearly not a valid mini object. Otherwise we
probably cause more harm than good. We keep the second sanity
check based on the 'real refcount' at the time of the unref
around for now too.

https://bugzilla.gnome.org/show_bug.cgi?id=784383
2017-07-15 11:57:43 +01:00
Tim-Philipp Müller
d123291183 win32: find plugin scanner in libexecdir subdir as configured
https://bugzilla.gnome.org/show_bug.cgi?id=679115
2017-07-14 16:13:12 +01:00
Tim-Philipp Müller
f28435b0d4 meson: find python3 via python3 module
And rename python3 variable in meson build files for clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=783198
2017-07-07 12:07:09 +01:00
Tim-Philipp Müller
d93ebba58b meson: add option to disable tracer hooks 2017-07-05 13:27:48 +01:00
Tim-Philipp Müller
d0c956adac tracing: fix build with tracer hooks disabled 2017-07-05 13:17:49 +01:00
Tim-Philipp Müller
cce18426f7 miniobject: make refcount tracing and debug logging reliable
Tracing of the refcounts wasn't thread-safe, and log output of
the refcount values before/after wasn't reliable.

https://bugzilla.gnome.org/show_bug.cgi?id=784383
2017-07-05 13:15:22 +01:00
Tim-Philipp Müller
f29082bfe1 plugin: clarify code that deduces plugin name from file name
Make the final else branch explicit for clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=783333
2017-07-05 11:15:43 +01:00
Xabier Rodriguez Calvar
bda8440f1f protection: add function to filter system ids
gst_protection_filter_systems_by_available_decryptors() takes an array
of strings and returns a new array of strings filtered by the available
decryptors for them so the ones you get are the ones that you should be
able to decrypt.

https://bugzilla.gnome.org/show_bug.cgi?id=770107
2017-06-28 10:52:11 +01:00
Matej Knopp
c9c2902604 gstplugin: remove gst prefix when loading plugin on MSVC
When building with Meson and MSVC, our plugins don't have a 'libgst'
suffix and are just 'gstfoo.dll', so look for that too.

https://bugzilla.gnome.org/show_bug.cgi?id=783333
2017-06-23 14:40:48 +05:30
Thibault Saunier
3a1f2c22dc utils: Add a function to get a string representation of GstStateChange
API:
    gst_state_change_get_name

https://bugzilla.gnome.org/show_bug.cgi?id=783798
2017-06-20 09:33:31 -04:00
Thibault Saunier
54e16cc34e element: Add missing values for "to same" state changes
And handle newly added GstStateChange values in GstPipeline

https://bugzilla.gnome.org/show_bug.cgi?id=783798
2017-06-20 09:33:25 -04:00
Heekyoung Seo
c30c39b5ad utils: Fix leak in failed case of regression overflow checking
https://bugzilla.gnome.org/show_bug.cgi?id=783978
2017-06-20 10:55:49 +03:00
Heekyoung Seo
d32afe3f71 registrychunk: Fix leak in failed case of reading plugin dependency string
https://bugzilla.gnome.org/show_bug.cgi?id=783978
2017-06-20 10:55:49 +03:00
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
Nicolas Dufresne
c21e219ed4 structure: Add get/set_array/list using GValueArray
This adds a binding friendly interface to get and set arrays
and list into GstStructure.

New API:
 - gst_structure_set_array
 - gst_structure_set_list
 - gst_structure_get_array
 - gst_structure_get_list

https://bugzilla.gnome.org/show_bug.cgi?id=753754
2017-03-24 13:30:45 -04:00
Nicolas Dufresne
84f826a937 gstvalue: Add transformation to/from GValueArray
This allow transforming a GValue of type G_TYPE_VALUE_ARRAY to
and from GST_TYPE_ARRAY/LIST.

https://bugzilla.gnome.org/show_bug.cgi?id=753754
2017-03-24 13:30:45 -04:00
Jan Schmidt
0ff74f8d6d paramspecs: Use gst_value_array_get_type() for GstParamSpecArray type
When registering GstParamSpecArray, use the gst_value_array_get_type()
function to get the type, rather than the GST_TYPE_ARRAY macro, which
gets it from the _gst_value_array_type, which is in turn only
initialised during gst_init()

Fixes criticals with (python) bindings that look up all the
types from the gobject-introspection info as soon as they
are imported.

/usr/lib64/python3.5/site-packages/gi/module.py:178: Warning: g_param_type_register_static: assertion 'g_type_name (pspec_info->value_type) != NULL' failed
  g_type = info.get_g_type()
/usr/lib64/python3.5/site-packages/gi/module.py:212: Warning: g_type_get_qdata: assertion 'node != NULL' failed
  type_ = g_type.pytype
/usr/lib64/python3.5/site-packages/gi/module.py:226: Warning: g_type_get_qdata: assertion 'node != NULL' failed
  g_type.pytype = wrapper
/usr/lib64/python3.5/site-packages/gi/module.py:226: Warning: g_type_set_qdata: assertion 'node != NULL' failed
  g_type.pytype = wrapper
2017-03-24 17:53:31 +11:00
Vincent Penquerc'h
371fe0be65 value: fix union of int range and int when extending on a side
The internal representation uses bounds scaled by the step

Add tests to catch those cases
2017-03-20 14:09:55 +00:00
Jan Schmidt
d781d09d99 gstvalue: Do more checks when guessing at flagset strings
If guessing that a string matches a flagset, be more thorough
at checking that the string following a string of hex:hex:
actually looks like a flag set string. Add some unit tests
to catch more cases.

https://bugzilla.gnome.org/show_bug.cgi?id=779755
2017-03-09 12:09:57 +11:00
Tim-Philipp Müller
fdd5665b66 elementfactory: promote factory not found log message to WARNING
In most cases people really want to know when an element
could not be created.
2017-03-08 14:51:42 +00:00
Tim-Philipp Müller
c90d3e9d5a info: document that logging macros don't need newlines at the end
https://bugzilla.gnome.org/show_bug.cgi?id=779459
2017-03-03 12:53:26 +00:00
Tim-Philipp Müller
08ee7a86ed pad: add since marker to docs for new API 2017-02-24 21:35:27 +00:00
Thibault Saunier
18a5cff70c registry: Only scan plugin files that end with an extension
Not file that would for some reason end with 'so' or 'dll', etc...

https://bugzilla.gnome.org/show_bug.cgi?id=779175
2017-02-24 16:16:39 -03:00
Thibault Saunier
6326c764ee pad: Add API to get the current state of a task
Avoiding the user to need to deal with the locking himself etc.

API:
  gst_pad_task_get_state

https://bugzilla.gnome.org/show_bug.cgi?id=778830
2017-02-24 16:16:23 -03:00
Thibault Saunier
d6dba3fd6f meson: Add an option to disable usage of libunwind
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=778193
2017-02-24 16:16:23 -03:00
Vivia Nikolaidou
63775ac6e3 value: Add deserialization for arrays/lists outside GstStructures
This is mostly useful for properties of those types when used in
gst-launch or similar.

https://bugzilla.gnome.org/show_bug.cgi?id=777375
2017-02-23 21:00:16 +02:00
Sebastian Dröge
ba49927aaf value: Add a type abbreviation for GstFlagSet in serialization 2017-02-23 20:50:38 +02:00
Vivia Nikolaidou
a3cfcbfede value: Always add the type name to elements when serializing arrays/lists
But only when serializing outside of GstStructures, because in case of
GstStructure the type is already preprended to the array/list and the
GstStructure API makes sure that they have the same "generic" type so
deserialization works properly.

This keeps serialization of GstStructures the same as before, and the
GstCaps unit tests already test for that. However when serializing
standalone arrays/lists get the types added now.
2017-02-23 20:48:40 +02:00
Vivia Nikolaidou
33118f6118 value: Move list/array serialization/deserialization functions from GstStructure to GstValue
https://bugzilla.gnome.org/show_bug.cgi?id=777375
2017-02-23 20:22:03 +02:00
Vivia Nikolaidou
978df5d0ff paramspecs: Add GstParamSpecArray for GST_TYPE_ARRAY typed properties
These are mostly useful to get our automatic
serialization/deserialization from strings and simple usage from
gst-launch or similar.

https://bugzilla.gnome.org/show_bug.cgi?id=777375
2017-02-23 20:16:17 +02:00
Wim Taymans
a15f7ad8f8 info: put () around macro arguments
Put braces around macro arguments or else we might run into problems
with operater precedence.
2017-02-20 12:16:32 +01:00
Wim Taymans
c1bcf748cc deviceproviderfactory: ignore empty classes 2017-02-20 10:45:57 +01:00
Wim Taymans
50cb645d1f deviceproviderfactory: compare class against NULL
gstdeviceproviderfactory.c:501:20: error: comparison between pointer and zero character constant [-Werror=pointer-compare]
     if (classes[0] == '\0')
2017-02-20 10:25:50 +01:00
Nirbheek Chauhan
cd9e154c73 meson: Fix build with latest upstream git
Trivial incorrect include_directories() call
2017-02-18 16:49:40 +05:30
Peter Korsgaard
c893882fd9 gstconfig: Fix unaligned access support for the openrisc architecture
Teach gstconfig.h.in about the openrisc (or1k) architecture.  Fixes
buildroot autobuild failure:

http://autobuild.buildroot.net/results/717/717d78ce0935749f477bdf3133b6f20057a28c01/build-end.log

https://bugzilla.gnome.org/show_bug.cgi?id=778866
2017-02-18 11:53:30 +02:00
Stefan Sauer
5bb137e9ee pad: revert the content changes from previous commit
The default behaviour when returning GST_PAD_PROBE_OK is unrelated to
the other return code.
2017-02-15 20:58:49 +01:00
Stefan Sauer
ed7d1b668b pad: fix docs for GstPadProbeReturn
There is no 'block' value, but we have 'drop'. Also fix the markup; it
is '%' to link to constants (and enum values).
2017-02-15 20:37:40 +01:00
Sebastian Dröge
ef42e3811e parse: Don't translate the "bin" element name
Otherwise we won't be able to create bins, there is no element called
"Behälter" if you're using a German locale.

https://bugzilla.gnome.org/show_bug.cgi?id=777998
2017-01-31 21:20:22 +02:00
Seungha Yang
15f2898e87 segment: Modifiy inside segment condition
There is a special case that segment_start == segment_stop == start.
It's inside of segment

https://bugzilla.gnome.org/show_bug.cgi?id=764707
2017-01-31 15:55:12 +01:00
Thibault Saunier
94da8f5d8d info: Check libunwind return codes 2017-01-27 16:49:56 -03:00
Thibault Saunier
a87b4551a6 Port gtk-doc comments to their equivalent markdown syntax
Modernizing our documentation and preparing a possible move to hotdoc.
This commits also adds missing @title metadatas to all SECTIONs
2017-01-27 16:36:38 -03:00
Thibault Saunier
76f049bc49 gst: Fix includes so that files can be built separately
It used to work but it has broke in the 1.10 cycle.
2017-01-27 16:33:42 -03:00
Thibault Saunier
6c9a092def gstpoll: Encode in utf-8 2017-01-27 16:30:02 -03:00
Brendan Shanks
e286e81856 GstStream/GstStreamCollection: add g_autoptr() support
https://bugzilla.gnome.org/show_bug.cgi?id=777810
2017-01-27 00:07:51 +00:00
Stefan Sauer
a533b6c2f9 bin: update the docs for the event forwarding
First this sends the events not only to the sources and 2nd this is not only
for seek events.
2017-01-18 22:39:33 +01:00
Sebastian Dröge
80c5fd50db parse: Don't hold element's object lock while querying element pads' caps
This can easily deadlock if the element uses the object lock for
something internally, like posting an error message. Use an GstIterator
for iterating over the pads instead.

https://bugzilla.gnome.org/show_bug.cgi?id=777449
2017-01-18 15:43:13 +02:00
Jan Schmidt
b3296183fc gstbin: Quieten a noisy FIXME about duration caching
Only print this FIXME once per run, at it's pretty annoying in
lots of logs otherwise.
2017-01-16 09:44:15 +11:00
Tim-Philipp Müller
0a1baf6d07 datetime: fix potential out-of-bound read on malformed datetime string
https://bugzilla.gnome.org/show_bug.cgi?id=777263
2017-01-15 11:53:41 +00:00
Tim-Philipp Müller
c950d8b3cb pad: clarify docs for GST_PAD_PROBE_DROP 2017-01-03 12:30:02 +00:00
Jan Schmidt
246618125f padtemplate: Fix null pointer dereference on invalid static caps
A typo in a static caps string may result in failure to
deserialise it, so don't dereference the result without
checking.
2017-01-03 02:21:10 +11:00
Jan Schmidt
269699f621 caps: Fix null pointer dereference on invalid static caps
A typo in a static caps string may result in failure to
deserialise it, so don't dereference the result without
checking.
2017-01-03 02:21:10 +11:00
Stefan Sauer
d118ed3deb structure: reword comment for gst_structure_parse_string()
The comment was a bit confusing. Turn it into gtkdoc style and reword it.
2016-12-30 19:42:57 +01:00
Stefan Sauer
ee52459a5e info: re-eval GST_DEBUG env var for late categories
When registering a new debug category after _debug_init(), we need to
re check the GST_DEBUG filter settings again.
In addition when parsing the filter setting, we need to already bump up
the min-debug level to not suppress debug log statments that dynamically
register a category. This happens in libraries that use a function to
register a category on first use.
2016-12-30 12:10:15 +01:00
Thibault Saunier
89799ae90c gstpreset: Lower some debug logs level
A property not defined in a preset file can simply mean that the
user wants it to be set as it default value, and we should not warn
about that.

A missing preset file in a directory can happen has there are several
directory where a preset can be found in.
2016-12-22 16:28:03 -03:00
Nirbheek Chauhan
9e5d1370c8 meson: Fix order of C source and header in mkenums
Otherwise gstenum_h dependencies don't get added properly to gst_dep and
we see racy build failures everywhere.
2016-12-22 23:39:39 +05:30
Tim-Philipp Müller
21d3f9a0e4 meson: use gnome.mkenums() with template files for enum file gen
Saves us a custom script. Template files are nicer than passing
multiline templating stuff through to glib-mkenums. And we can
get rid of our custom python script.
2016-12-22 11:35:04 +00:00
Sebastian Dröge
597e43cffc element: Add guard to gst_element_release_pad() to ensure the pad belongs to this element
It's a programming error to pass other pads here, and it easily causes
crashes or other problematic behaviour down the road as subclasses
usually assume to only get their pads.
2016-12-22 12:08:14 +02:00
Nirbheek Chauhan
aefc8007c6 meson: Add several missing features from configure.ac
* -Wl,-Bsymbolic-functions
* HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
* HAVE_POSIX_TIMERS
* HAVE_MONOTONIC_CLOCK
* HAVE_UINT128_T
* HAVE_LONG_LONG
* HAVE_PROCESS_H
* HAVE_GMP
* HAVE_GSL
* HAVE_DLADDR

Also, don't use prefix for checking functions, and only check msvc
functions on Windows.
2016-12-21 23:51:36 +05:30
Stefan Sauer
b8476f2de1 tracerrecord: improve the values flags docs 2016-12-20 21:08:09 +01:00
Thibault Saunier
30133909ce leaks: Allow tracing Gst(Mini)Object reffing operations
It makes it much simpler to later debug refcount issues.

https://bugzilla.gnome.org/show_bug.cgi?id=775541
2016-12-20 15:29:10 -03:00
Nirbheek Chauhan
4d179024f0 meson: Don't search for python3 twice 2016-12-17 00:00:11 +05:30
Matthew Waters
ad40c5cd36 value: add structure intersect/union/is_subset/fixate implementations
Allows proper usage of structures in structures in caps.  Subtraction
is not implemented due to complications with empty fields representing
all possible values.

The only implementation that doesn't delegate to the already existing
GstStructure functions is the union function.

https://bugzilla.gnome.org/show_bug.cgi?id=775796
2016-12-15 13:39:57 +11:00
Tim-Philipp Müller
ca4ac71555 buffer: add gst_buffer_iterate_meta_filtered()
For convenience. Pretty much every user of
gst_buffer_iterate_meta() filters for a specific
api type.

https://bugzilla.gnome.org/show_bug.cgi?id=775727
2016-12-14 18:18:43 +00:00
Tim-Philipp Müller
de65b88d13 buffer: mark gst_buffer_iterate_meta() as 'skip' for bindings
The pointer state arg won't work well, bindings can use
the foreach function instead.

https://bugzilla.gnome.org/show_bug.cgi?id=775727
2016-12-14 15:23:41 +00:00
Iñaki García Etxebarria
9cdacefa98 g-i: Fix annotations for gst_event_new_select_streams() and gst_event_parse_select_streams()
A gchar is not a string.

https://bugzilla.gnome.org/show_bug.cgi?id=775944
2016-12-14 09:07:14 +00:00
Reynaldo H. Verdejo Pinochet
eb9c8bdf66 gstpad: only warn on performance penalty if not using the template caps
After b76ecfd992 introduced
GST_PAD_FLAG_ACCEPT_TEMPLATE, the performance penalty this
message is refering to (the cascading ACCEPT_CAPS query)
only applies to the cases where !GST_PAD_IS_ACCEPT_TEMPLATE
2016-12-14 00:01:34 -08:00
Stefan Sauer
96304d613f gstvalue: add serialisation for GTypes
We need this in the GstTracerRecord. This will serialize GTypes to the typename
and vice versa.
2016-12-13 13:24:18 +01:00
Thibault Saunier
97b6d8fb12 gst: Fix building with msvc 2016-12-13 09:21:16 -03:00
Tim-Philipp Müller
49f1f351c8 gst: init new flags type in gst_init()
Fix 'make check' some more.
2016-12-12 20:55:31 +00:00
Thibault Saunier
33616d47be info: Add a 'flags' parametter to gst_debug_get_stack_trace
This is an API break but that API has not been released yet.

We are passing a flag rather than a simple boolean as we can imagine
to implement more features in the future for example to retrieve a
stack trace for all the threads, etc..

Retrieving source file and line numbers is pretty
expensive while getting a stack trace, this new argument
allows the user to decide to retrieve a backtrace
without those infos instead which is much faster.

For example running $ GST_LEAKS_TRACER_STACK_TRACE=1 GST_DEBUG=GST_TRACER:7 \
GST_TRACERS=leaks time gst-launch-1.0 videotestsrc num-buffers=1 ! fakesink:

* With simple stack traces:

    0.04s user 0.02s system 99% cpu 0.060 total

* With full stack traces:

    0.66s user 0.23s system 96% cpu 0.926 total

https://bugzilla.gnome.org/show_bug.cgi?id=775423
2016-12-12 15:06:20 -03:00
Stefan Sauer
0dbf978eb4 tracer: move the PAD_LINK tracer hook to _pad_link_full()
This is ultimately executing the pad_link. In the previous position we missed
some links, notably ghostpads.
2016-12-08 20:20:17 +01:00
Peter Seiderer
b6e3a0a2dc gstconfig: Fix unaligned access support for arc and nios2 architectures
Fixes buildroot autobuild failures ([1], [2]).

[1] http://autobuild.buildroot.net/results/fbd/fbdcd90635d5ec3a62ad98a7ff93b71b8e5ecde4
[2] http://autobuild.buildroot.net/results/f3c/f3c9b0ed4ffb114221057237ce22c995b673a98b

https://bugzilla.gnome.org/show_bug.cgi?id=775728
2016-12-07 10:37:49 +02:00
Seungha Yang
0494c173e0 uri: Add new uri API to get media fragments URI as table
As an usecase of URI fragment, it can indicate temporal or spatial
dimension of a media stream. To easily parse key-value pair,
newly added gst_uri_get_media_fragment_table () API will provide
the table of key-value pair likewise URI query.
See also https://www.w3.org/TR/media-frags/

https://bugzilla.gnome.org/show_bug.cgi?id=774830
2016-12-06 20:28:55 +00:00
Thibault Saunier
dbe3d2b328 info: Properly start and end dwfl sessions when getting stack traces
We were creating a new session to retrive each line of a stack trace
and we are supposed to start it once for a whole stack trace.

And pass the whole file to gst-indent.

https://bugzilla.gnome.org/show_bug.cgi?id=775365
2016-12-06 14:06:43 -03:00
Peter Seiderer
28db1c0631 gstconfig: Fix unaligned access support for microblaze and xtensa architectures
Fixes buildroot autobuild failures, for details see:
http://lists.busybox.net/pipermail/buildroot/2016-December/178895.html

https://bugzilla.gnome.org/show_bug.cgi?id=775661
2016-12-05 20:52:08 +00:00
Tim-Philipp Müller
8e4582946c meta: remove unnecessary padding for GstMetaInfo struct
This structure is always allocated by GStreamer, can't be
subclassed or extended, and is never allocated or used on
the stack, so we don't need any padding and can extend it
as we please.
2016-12-05 20:35:41 +00:00
Sebastian Dröge
78e485b314 bin: Make sure to resync iterators and handle RESYNC at all in gst_iterator_foreach() calls 2016-12-01 18:20:11 +02:00
Sebastian Dröge
160ca37139 clock: Fix offsetting of times_temp relative to the times array 2016-11-29 18:14:58 +02:00
Nirbheek Chauhan
ad592f86b6 meson: Add Autotools changes that weren't mirrored
commits:
a7d282d272
6fdb4df0f8
1aceebd67f
2016-11-28 19:28:27 +05:30
Edward Hervey
82c871a8a3 gstutils: Fix a pad leak
When requesting a pad from a template and it's already linked, this
means it was a static pad. Since we only want to return an *available*
pad, we must return NULL ... but we must also remove the reference
we got from getting that static pad.

The "No need to unref" message (which wasn't true for quite some time)
dates back from the very very very first commit introducing the 0.10
features.
2016-11-28 14:02:23 +01:00
Sebastian Dröge
a7d282d272 utils: Export linear regression calculation as public function
It is useful outside the GstClock code too.

https://bugzilla.gnome.org/show_bug.cgi?id=774916
2016-11-28 14:26:50 +02:00
Sebastian Dröge
6dcf8263e8 message: Ensure that the "debug" field of error/warning/info messages is valid UTF-8
The caller might pass arbitrary data here that caused the error, and
trying to set invalid UTF-8 in a GstStructure causes it to be not set at
all. Later when trying to parse it, the field will not exist and the
return value will point to invalid memory. Prevent this by storing NULL
instead.

Also print a g_warning(), the caller should never ever do this to begin
with.
2016-11-28 12:32:16 +02:00
Sebastian Dröge
2872ae21c3 element: Don't increment NULL pointers
Trivial workaround for coverity false warning.

CID 1394488, 1394487.
2016-11-23 18:57:17 +02:00
Julien Isorce
47fd993d4d memory: log with GST_INFO instead GST_ERROR when subclass map failed.
Add unit test to ensure that.

It can be a normal execution path to do some map trials and there is
no need to worry the user in that case.

The application has to check the return value of gst_memory_map.

https://bugzilla.gnome.org/show_bug.cgi?id=765600
2016-11-21 21:06:31 +00:00
Tim-Philipp Müller
0794b593af docs: misc fixes 2016-11-16 10:57:33 +00:00
Tim-Philipp Müller
06b015b62a utils: use temp var in fallback GST_WRITE_*() macros
To make sure the value is only expanded/used once, in case
there are side effects to it, and to avoid calculating it
or looking it up multiple times if there is a calculation
or lookup involved.
2016-11-16 10:57:33 +00:00
Scott D Phillips
075744a894 Cast away const from GstMetaInfo in *_get_meta_info() functions
MSVC warns about the const in the implicit argument conversion in the
calls to g_once_init_{enter,leave}. It's OK so explicitly cast it.

https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-15 14:51:18 +02:00
Thibault Saunier
ae608845ca meson: require meson 0.36 and use new pic arg on static libs
Removes a meson warning and some special casing we had.
2016-11-14 19:21:13 +00:00
Scott D Phillips
5a72c23a54 Change some types to match their prototypes
Particularly note that the underlying integer type of the enum
GstTypeFindProbability is implementation dependent and may not match
guint.

https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-14 21:03:57 +02:00
Tim-Philipp Müller
cc5af6273f utils: faster GST_WRITE_* macros if unaligned access is possible
https://bugzilla.gnome.org/show_bug.cgi?id=599546
2016-11-12 12:36:05 +00:00
Tim-Philipp Müller
89b413ef15 parse: better error message when linking two elements with capsfilter fails
https://bugzilla.gnome.org/show_bug.cgi?id=760550
2016-11-12 10:55:23 +00:00
Tim-Philipp Müller
66d2bae604 Add gst_print(), gst_println(), gst_printerr(), gst_printerrln()
Useful for debugging.

https://bugzilla.gnome.org/show_bug.cgi?id=766470
2016-11-12 10:43:55 +00:00
Scott D Phillips
584da6e86c taglist: remove return void in gst_tag_register
MSVC warns on this and the documentation about the warning says:

> The compiler assumes the function returns a value of type int

which is a little scary, so lets just remove the unnecessary 'return'

https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-12 10:50:33 +02:00
Guillaume Desmottes
24a09d1b6d info: add GstStream and GstStreamCollection support to gst_debug_print_object()
https://bugzilla.gnome.org/show_bug.cgi?id=769220
2016-11-11 13:22:25 +00:00
Victor Toso
5571ad1260 pool: Fix compiler warning on mingw64
gstpoll.c: In function 'release_event':
gstpoll.c:239:3: error: suggest parentheses around assignment used as
          truth value [-Werror=parentheses]

   if (status = WaitForSingleObject (set->wakeup_event, INFINITE)) {
   ^~

https://bugzilla.gnome.org/show_bug.cgi?id=774108
2016-11-09 09:23:05 +02:00
Thibault Saunier
e6c8c53fbe debug: Remove the Gst only based stack trace printing implementation
We now have 2 other implementations that should work better.

https://bugzilla.gnome.org/show_bug.cgi?id=772555
2016-11-04 14:22:05 -03:00
Thibault Saunier
a8d4857555 gst: Use libunwind/libdw to generate backtraces if avalaible
Making the gst_debug_print_trace function more generally useful.

API:
  + gst_debug_get_trace

https://bugzilla.gnome.org/show_bug.cgi?id=772555
2016-11-04 14:22:05 -03:00
Sebastian Dröge
28ff7fd272 gst: Also include the gstdynamictypefactory.c source file in the build 2016-11-02 10:12:58 +02:00
Sebastian Dröge
249fa68f47 gst: Install gstdynamictypefactory.h header file 2016-11-02 10:04:01 +02:00
Jan Schmidt
5a5ae1be1f parse-launch: Support linking all pads with new operator
Introduce a new operator ':' - e.g. element1 ':' element2

For example, 'uridecodebin : encodebin' -
if the encodebin has multiple profiles compatible with the
decodebin, multiple links will be created.

With '!' , after one delayed link is successfully done, the
pad-added callback is disconnected.

https://bugzilla.gnome.org/show_bug.cgi?id=751450
2016-11-02 12:04:33 +11:00
Jan Schmidt
e1dc60524e dynamic types: Implement dynamic types in the registry
Implement GstDynamicTypeFactory as a new registry feature.

GstDynamicTypeFactory provides a way of registering a GType
into the registry, such that it will be registered as a dynamic
type when the registry is loaded, and then automatically loaded
if the type is needed during caps parsing.

This allows using non-core types in pad templates, by loading a
registry feature to create the GType on the fly.

https://bugzilla.gnome.org/show_bug.cgi?id=750079
2016-11-02 11:21:37 +11:00
Sebastian Dröge
1a1152fa03 value: Update GstValue table size for GValueArray 2016-11-01 23:54:05 +02:00
Stian Selnes
287645c2d7 info: Replace %p and %r in GST_DEBUG_FILE
It's useful to be able to set a name pattern for GST_DEBUG_FILE so that
the same environment variable can be used for multiple processes and
still write to different files. Especially useful if these processes
run simultaneously.

%p: Replaced with PID
%r: Replaced with random number

%p is obviously useful. %r is useful when for instance running two
processes with same PID but in different containers.

https://bugzilla.gnome.org/show_bug.cgi?id=773092
2016-11-01 20:32:46 +02:00
Stian Selnes
fd728c2531 registry: set env GST_REGISTRY_DISABLE=yes to disable registry
If GST_REGISTRY_DISABLE=yes the registry is disabled similar to
compile time switch GST_DISABLE_REGISTRY.

https://bugzilla.gnome.org/show_bug.cgi?id=773089
2016-11-01 20:31:46 +02:00
Stian Selnes
c85a30f80b gstvalue: Make GValueArray serializable
For instance very useful for logging GValueArray with GST_PTR_FORMAT

https://bugzilla.gnome.org/show_bug.cgi?id=761918
2016-11-01 20:30:43 +02:00
Wonchul Lee
f80dfc9b06 element: Allow multiple conversion specifiers for request pads
This allows pad template names like "src_%u_%u", but it does not allow
multiple specifiers of string type %s as that would lead to ambiguities.

https://bugzilla.gnome.org/show_bug.cgi?id=761225
2016-11-01 20:29:03 +02:00
Thiago Santos
83cac0f7b6 pad: add no-reconfigure link check
Enable it to prevent sending reconfigure when linking elements.

Useful for autoplugging when we know caps or bufferpools shouldn't change
to save doing caps renegotiation to end up with the same final scenario.

The no-reconfigure is not a proper check, it is a flag. It is implemented
as a GstPadLinkCheck to avoid creating another gst_pad_link variant.

https://bugzilla.gnome.org/show_bug.cgi?id=757653
2016-11-01 20:28:14 +02:00
Nicolas Dufresne
3fc8a334b7 allocator: Mark registered allocator for leak 2016-10-24 11:54:22 -04:00
Andrew Eikum
ec4c76f297 gstmessage.h: Avoid gcc bit shift overflow compiler warning
Avoids bit shift overflow warning with gcc6.

https://bugzilla.gnome.org/show_bug.cgi?id=767882 (glib)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71803 (gcc)
https://bugzilla.gnome.org/show_bug.cgi?id=767883
2016-10-24 11:49:37 +01:00
Tim-Philipp Müller
f7391936ce parse: fix erroneous use of _("")
Fixes xgettext warnings when doing 'make update-po':
gst/parse/grammar.y:217: warning: Empty msgid.  It is reserved by GNU gettext:
                                  gettext("") returns the header entry with
                                  meta information, not the empty string.
2016-10-23 22:11:08 +01:00
Thibault Saunier
c0bfb1b524 Revert "meson: Use the new pic argument on static libs"
This reverts commit a5752240a1.

pic was added after 0.35 and will be present in 0.36 (meson
documentation was wrong).
2016-10-20 17:19:25 -03:00
Thibault Saunier
a5752240a1 meson: Use the new pic argument on static libs
We depend on meson 0.35 which makes it simpler to handle

Removes a meson warning
2016-10-20 16:04:42 -03:00
Matthew Waters
556c540ecd element: use g_strcmp0 in set_context
It's NULL-safe while the libc implementation may not be.

https://bugzilla.gnome.org/show_bug.cgi?id=771773
2016-10-19 22:24:27 +11:00
Matthew Waters
3654d844c1 element: check for invalid gstcontext's being provided to set_context
https://bugzilla.gnome.org/show_bug.cgi?id=771773
2016-10-19 22:24:27 +11:00
Sebastian Dröge
35a34d2fa8 controlbinding: Store object in a thread-safe GWeakRef
g_object_weak_ref() is not thread-safe.
2016-10-13 18:25:59 +02:00
Sebastian Dröge
a3185f626a controlsource: Remove misleading sentence from the documentation
control sources are not required to return values between 0.0 and 1.0.
This is completely up to the control binding that is used.
2016-10-13 17:55:45 +02:00
Sebastian Dröge
98ded2dd60 object: Fix broken sentence structure in docs 2016-10-13 17:22:00 +02:00
Edward Hervey
71a2bdeaf7 streams: Extend GstStreamType documentation
Users shouldn't assume it will be a single value since it's a flag.
2016-10-13 12:04:20 +02:00
Edward Hervey
0ab950f501 bin: Add a new GST_BIN_FLAG_STREAMS_AWARE flag
This flag is to indicate to child elements that they can add and
remove pads at any point in time without re-adding existing ones.

Elements should post before-hand a GST_MESSAGE_STREAM_COLLECTION

https://bugzilla.gnome.org/show_bug.cgi?id=772741
2016-10-11 12:36:57 +02:00
Edward Hervey
d02e1d7f7d bin: Fix iterator resync'ing
When we get GST_ITERATOR_RESYNC, we need to call gst_iterator_resync()
otherwise we will always get GST_ITERATOR_RESYNC (and that loop would
run forever).
2016-10-08 17:23:08 +02:00
Sebastian Dröge
644584668f message: Fix typo in gst_message_new_progress() docs
test -> text
2016-10-01 16:47:43 +03:00
Tim-Philipp Müller
557e06a6f1 meson: fix internal printf for %ll format modifier on 32-bit systems
gst/gstprintf unit test would fail on 32-bit x86 with:
gstprintf.c:83:printf_I32_I64:0: 'str' (64-bit x value = b5a6978f) is not equal to '"64-bit x value = f1e2d3c4b5a6978f"'
2016-09-24 18:12:46 +01:00
Nirbheek Chauhan
f8e3637dc7 Revert "meson: Force gstenum_h to be built when using gst_dep"
This reverts commit cfc565e2d8.

The commit was redundant since gst_gen_sources already contains
gstenum_h. We're still investigating why some people are still seeing
a racy build failure.
2016-09-23 04:21:42 +05:30
Nirbheek Chauhan
cfc565e2d8 meson: Force gstenum_h to be built when using gst_dep
This forces gstenumtypes.h to be built whenever something uses gst_dep
as a subproject dependency. This is needed since gst/gst.h includes
gstenumtypes.h

Closes https://github.com/mesonbuild/meson/issues/714 which is not
actually a Meson bug.
2016-09-23 00:28:55 +05:30
Sebastian Dröge
bf1c12342a bin: Add forgotten "git commit --amend" for last commit
Need to cast away the const as g_queue_foreach() takes a non-const GQueue*
2016-09-19 10:07:51 -04:00
Kouhei Sutou
a43de49d52 bin: When copying the sort iterator, also copy its internal queue
Otherwise both iterators share the same references, the second one
usually resulting in a crash when being freed.

https://bugzilla.gnome.org/show_bug.cgi?id=771649
2016-09-19 10:04:55 -04:00
Arun Raghavan
4cc0254df1 message: Fix documentation for gst_message_new_duration()
Seems like there was some documentation left over from when this was
gst_message_new_duration().
2016-09-15 17:39:32 +05:30
Nirbheek Chauhan
b6e69ffdfb gstconfig: Use __declspec when built with MinGW and linking with MSVC
Earlier we were only using __declspec(dllexport/import) when we were
built with MSVC because when built with MinGW and linking with MinGW we
don't need it (and we get linker errors because of it).

However, when we're built with MinGW and someone wants to link to us
with MSVC, we still need the prototypes to have __declspec(dllimport)
since MSVC cannot do auto-import like GCC can.

https://bugzilla.gnome.org/show_bug.cgi?id=771029
2016-09-13 13:46:19 +05:30
Sebastian Dröge
c7e0299d24 bin: Also don't *unset* element flags if they're in the suppressed flags
Otherwise our bin might lose various flags that were explicitly set on
it at arbitrary times.
2016-09-12 17:07:09 +02:00
Wonchul Lee
978b7ace52 bin: Add setter and getter to suppress element flags
Suppress-flags is for preventing propagation of child element's specific
flag when it is added to the bin.

https://bugzilla.gnome.org/show_bug.cgi?id=770627
2016-09-10 13:28:21 -03:00
Graham Leggett
84fcec0065 gst: Ensure gst_value is initialised before gst_tag
Otherwise GST_TYPE_FRACTION will work correctly in tags.

https://bugzilla.gnome.org/show_bug.cgi?id=753922
2016-09-10 10:59:40 +03:00
Sebastian Dröge
1b7ab25512 element: Reset the stop position to NONE in seek_simple()
When using seek_simple() in combination with other kinds of seeks, this
becomes problematic. seek_simple() does not reset the stop position to
GST_CLOCK_TIME_NONE but keeps whatever a previous seek did. So for example
when doing a seek_simple() after a rate=-1 seek, we would usually get
assertions that start>stop (and stop being the old stop from the rate=1 seek).

https://bugzilla.gnome.org/show_bug.cgi?id=771104
2016-09-10 10:58:44 +03:00
Thibault Saunier
ed61bff072 meson: Allow others to build GIR files when using GStreamer as subproject
And add a way to disable the introspection and bump version to 1.9.2
2016-09-05 12:39:12 -03:00
Sebastian Dröge
b3a8885e35 gstconfig.h.in: Add another version of the SH4 #define and S390x
https://bugzilla.gnome.org/show_bug.cgi?id=770731
2016-09-05 11:11:29 +03:00
Wim Taymans
0abb6e1a42 config: newer gcc doesn't know __ppc__ and __ppc64__ anymore
__ppc__ and __ppc64__ are non-standard defines, we should use
__powerpc__ and __powerpc64__ instead because newer gcc doesn't know
them anymore.
2016-09-05 09:50:17 +02:00
Wim Taymans
0e8ebbe590 config: support System z 2016-09-01 14:13:40 +02:00
Thibault Saunier
da73b89200 element: Add API to more easily post messages about flowing issues
In many parts of the code we raise streaming error when the flow
goes wrong, and each time we create more or less similare error
message. Also that message does not let the application know what
has actually gone wrong. In the new API we add a "flow-return" detail
field inside the GstMessage so that the application has all the information
if it needs it.

API:
    GST_ELEMENT_FLOW_ERROR

https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-27 09:33:20 -03:00
Nirbheek Chauhan
22b892b44f gstconfig: Decide GST_EXPORT declaration style at build time
We only use GST_EXPORT consistently when building with MSVC by using the
visual studio definitions files (win32/common/*.def), so always disable
it when building with Autotools and only enable it with Meson when
building with MSVC.

This allows you to use MinGW to link to a GStreamer built with MSVC and
get the correct function prototypes to find functions and variables in
DLLs.
2016-08-26 15:20:50 +01:00
Tim-Philipp Müller
3cba95ca2a element: rename gst_element_message_new_details() to gst_make_element_message_details()
Fixes g-i warning "Gst: Constructor return type mismatch
symbol='gst_element_message_new_details' constructed='Gst.Element'
return='Gst.Structure'".

This is a newly-added function in git that has not been in a stable
release yet, so it's fine to rename it. It's also only used indirectly
via macros.
2016-08-26 12:56:40 +01:00
Tim-Philipp Müller
26797d0714 docs: fix various gtk-doc warnings
e.g. "warning: multi-line since docs found"
2016-08-26 12:35:23 +01:00
Tim-Philipp Müller
89f5df1782 g-i: info: allow passing NULL to gst_debug_remove_log_function()
Useful for removing the default handler from bindings.
2016-08-26 12:05:16 +01:00
Jan Schmidt
a95645eaba value: Implement can_intersect for GstFlagSet types
Make sure that gst_value_can_intersect returns TRUE
for GstFlagSet combinations that can successfully
intersect
2016-08-26 03:23:40 +10:00
Arjen Veenhuizen
cf6cac07dd buffer: add explicit getters and setters for buffer flags
These can be used from bindings.

https://bugzilla.gnome.org/show_bug.cgi?id=768301
2016-08-22 18:59:06 +01:00
Hoonhee Lee
a7a2623166 streams: update and emit notify signal only if taglist actually changed
https://bugzilla.gnome.org/show_bug.cgi?id=770161
2016-08-21 18:40:40 +01:00
Nirbheek Chauhan
b2f9808722 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Mathieu Duponchelle <mathieu.duponchelle@opencreed.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-19 21:26:14 +01:00
Tim-Philipp Müller
714d8aa451 Move gstconfig.h back to normal include dir
Now that it's arch-independent again. Will need fixes in cerbero too.
2016-08-13 13:55:15 +01:00
Nirbheek Chauhan
6ef601367e gstconfig.h: Detect unaligned access support at compile-time
This makes gstconfig.h completely arch-independent. Should cover all
compilers that gstreamer is known to build on, and all architectures
that I could find information on. People are encouraged to file bugs if
their platform/arch is missing.
2016-08-13 10:29:31 +01:00
Tim-Philipp Müller
e2cd6ffafc Remove old alloc tracing code now that we have a GstTracer-based replacement
It's been internal API only in 1.x.
2016-08-13 10:10:30 +01:00
Jan Schmidt
9fd2101b36 events: Implement the stream-group-done event
A new event which precedes EOS in situations where we
need downstream to unblock any pads waiting on a stream
before we can send EOS. E.g, decodebin draining a chain
so it can switch pads.

https://bugzilla.gnome.org/show_bug.cgi?id=768995
2016-07-25 20:22:20 +10:00
Carlos Rafael Giani
eead9cf827 message: Add redirect message
Redirection messages are already used in fragmented sources and in
uridecodebin, so it makes sense to introduce these as an official message
type.

https://bugzilla.gnome.org/show_bug.cgi?id=631673
2016-07-25 12:59:21 +03:00
Tim-Philipp Müller
d052ae63d8 element: fix GST_ELEMENT_ERROR() error code expansion
In some corner cases, the error 'code' part passed to
GST_ELEMENT_ERROR() is a valid define as well, in which
case it won't survive two levels of macro expansion, but
only one. Fixes:

oss4-sink.c: In function ‘gst_oss4_sink_open’:
error: ‘GST_RESOURCE_ERROR_0x00000002’ undeclared (first use in this function)
GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,

which is from GST_ELEMENT_ERROR(el,RESOURCE,OPEN_WRITE,..)
and OPEN_WRITE happens to be defined to 2 here.

https://bugzilla.gnome.org/show_bug.cgi?id=756806
https://bugzilla.gnome.org/show_bug.cgi?id=769117
2016-07-24 01:35:41 +01:00
Tim-Philipp Müller
12a10980b3 message: fix some nonsensical annotations 2016-07-22 17:32:33 +01:00
Vincent Penquerc'h
1105caa805 message: new API for additional custom data to error messages
https://bugzilla.gnome.org/show_bug.cgi?id=756806
2016-07-22 14:16:34 +01:00
Guillaume Desmottes
31ef105110 message: fix annotation of parse_stream_{collection,streams_selected}
gst_structure_id_get() returns a new reference so the returned object is
actually (transfer full).

The unit tests was already unreffing the objects.

https://bugzilla.gnome.org/show_bug.cgi?id=768776
2016-07-15 12:57:49 +01:00
Guillaume Desmottes
514beb7d60 message: fix annotation of parse_device_{added,removed}
gst_structure_id_get() returns a new reference so the returned device is
actually (transfer full).

The code using this API was already correct but the code example in
comments was not.

https://bugzilla.gnome.org/show_bug.cgi?id=768776
2016-07-15 12:56:52 +01:00
Guillaume Desmottes
2a0bba69e1 pad: add g-i transfer annotatation to _store_sticky_event()
For clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=768810
2016-07-15 12:50:21 +01:00
Guillaume Desmottes
e73650e5f9 miniobject: weak_unref: display the pointer of the object if failing
That's generally the most useful information to help debugging the
problem.

https://bugzilla.gnome.org/show_bug.cgi?id=768579
2016-07-08 17:52:48 +01:00
Guillaume Desmottes
757a8b04c0 bin: properly display the type of the removed message
Makes debugging easier.

https://bugzilla.gnome.org/show_bug.cgi?id=768579
2016-07-08 17:52:40 +01:00
Tim-Philipp Müller
7a0f4422fa element: re-create threadpool after cleaning up tasks
We don't free this from gst_deinit() but from gst_task_cleanup_all(),
so more GStreamer API may be called. In particular makes unit tests
work again with CK_FORK=no.

https://bugzilla.gnome.org/show_bug.cgi?id=768577
2016-07-08 17:46:06 +01:00
Guillaume Desmottes
40727d9c83 element: clean up thread pool from gst_task_cleanup_all()
This ensures that all async operations (started from gst_element_call_async())
have been completed and so there is no extra thread running.

Fix races when checking for leaks on unit tests as some of those
operations were still running when the leaks tracer was checking for
leaked objects.

https://bugzilla.gnome.org/show_bug.cgi?id=768577
2016-07-08 17:27:32 +01:00
Miguel París Díaz
9f982e2d75 pad: check query caps answered and caps not NULL
https://bugzilla.gnome.org/show_bug.cgi?id=768450
2016-07-07 10:08:15 +03:00
Jan Schmidt
17f9ac5657 gstinfo: Avoid gcc 6 warning that breaks the tests build
gcc 6 has problems detecting and avoiding throwing
a warning for tautological compares in macros (they
should only trigger for compares outside macros).

Avoid them with a nasty cast of one parameter to void *

https://bugzilla.gnome.org/show_bug.cgi?id=764526
2016-07-01 22:38:01 +10:00
Tim-Philipp Müller
3623f168e9 streams: sprinkle some Since: markers for docs 2016-06-30 15:07:28 +01:00
Edward Hervey
63f6f05d66 gst: New Stream listing/selection system
* GstStream
* GstStreamCollection
* GST_EVENT_SELECT_STREAMS
* GST_MESSAGE_STREAM_COLLECTION
2016-06-30 12:31:06 +02:00
Sebastian Dröge
241d0f16f6 poll: #define EWOULDBLOCK to EAGAIN if it's not defined on Windows 2016-06-29 23:24:02 +02:00
Sebastian Dröge
60a2087cb1 bufferpool: Fix handling of the GstPoll
Especially if multiple threads are waiting for buffers to be available again,
the current code was wrong. Fix this and document clearly how the GstPoll is
supposed to be used.

Also fix some potential races with reading from the GstPoll before writing
actually happened.

https://bugzilla.gnome.org/show_bug.cgi?id=767979
2016-06-29 21:21:04 +02:00
Sebastian Dröge
4ff2721810 bus: Make sure to always read the control after popping a message
It might happen that we popped the message before writing of the control
happened. In this case we just have to retry again a bit later, and failure to
do so will cause an additional byte in the control and the GSource /
gst_poll_wait() to always wake up again immediately.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Sebastian Dröge
149127b755 systemclock: Improve GstPoll handling and don't check for impossible errno values
Also just read/write control every time, GstPoll is optimized by itself
already to only do I/O if switching between empty and one byte.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Sebastian Dröge
cda3f1213b poll: Clarify when FALSE is returned from read/write_control()
And also mention what the expected values of errno are going to be.

write_control() will only ever return FALSE if there was a critical error. It
will never return because of EINTR, EAGAIN or EWOULDBLOCK.

read_control() will return FALSE if there was no byte to read, in which case
errno would be EWOULDBLOCK.
In all other cases there was a critical error.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Sebastian Dröge
254955df62 poll: set_controllable(), restart() and set_flushing() are only valid for non-timer GstPolls
On timer GstPolls it will cause the control socket state to become
inconsistent as now one less read_control() than write_control() be would
needed.

Similarly, read_control() and write_control() are only valid on timer
GstPolls.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Sebastian Dröge
0bfc9fb212 poll: Warn if the return value of gst_poll_read_control() is unused
This might fail even under correct usage, e.g. if read_control() is called
from another thread before write_control() finished in another. It has to be
retried then, or other measures have to be taken, depending on how it is used
by the surrounding code.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Matthew Gruenke
cd06aea103 poll: Fix various race conditions with read_control() and write_control()
This addresses slightly different race conditions on Linux and Windows, and
fixes gst_poll_read_control() when control_pending == 0.

On Linux, the socketpair() used for control should not be made O_NONBLOCK.
If there's any propagation delay between set->control_write_fd.fd and
set->control_read_fd.fd, even the mutex now held will not be sufficient to
prevent a race condition.  There's no benefit to using O_NONBLOCK, here.
Only liabilities.

For Windows, it's necessary to fix the race condition between testing
set->control_pending and performing WAKE_EVENT()/RELEASE_EVENT().  This is
accomplished by acquiring and holding set->lock, for both of these operations.
We could optimize the Linux version by making this Windows-specific.

For consistency with the Linux implementation, Windows' RELEASE_EVENT()
has also been made to block, although it should never happen.

Also, changed release_wakeup() to return TRUE and decrement control_pending
only when > 0.  Furthermore, RELEASE_EVENT() is called only when
control_pending == 1.

Finally, changed control_pending to use normal, non-atomic arithmetic
operations, since it's now protected by set->lock.

Note: even though the underlying signaling mechanisms are blocking,
release_wakeup() is effectively non-blocking, as it will only attempt to read
from control_read_fd.fd after a byte has been written to control_write_fd.fd
or WaitForSingleObject() after it's been signaled.

https://bugzilla.gnome.org/show_bug.cgi?id=750397
2016-06-29 21:21:04 +02:00
Guillaume Desmottes
e11539c30b bus: chain up GObject::constructed() to the parent class' implementation
Needed so GstBus can be tracked by the leaks tracer.

https://bugzilla.gnome.org/show_bug.cgi?id=768141
2016-06-28 17:23:17 +03:00
Nirbheek Chauhan
54fa564e01 gstconfig.h: Don't use extern with dllexport
GCC emits an error for this with -Werror:

plugin.c:22:1: error: 'gst_plugin_desc' initialized and declared 'extern' [-Werror]

This matches how glib does symbol exporting.

https://bugzilla.gnome.org/show_bug.cgi?id=767463
2016-06-24 01:09:32 +01:00
Nirbheek Chauhan
48088867db win32: Don't use dllexport/import when only building statically
If the prototypes in the public API have dllimport in them when building
statically on Windows, the compiler will look for symbols with symbol
mangling and indirection corresponding to a DLL. This will cause a build
failure when trying to link tests/examples/etc.

External users of GStreamer also need to define -DGST_STATIC_COMPILATION
if they want to link to static gstreamer libraries on Windows.

A similar version of this patch has been committed to all gstreamer
repositories.

https://bugzilla.gnome.org/show_bug.cgi?id=767463
2016-06-23 23:39:45 +01:00
Sebastian Dröge
6b9e70d193 device: Fix typo
paramater -> parameter
2016-06-15 16:12:36 +02:00
Tim-Philipp Müller
09d5ff4097 info: flesh out GST_PTR_FORMAT docs a bit 2016-06-14 19:16:33 +01:00
Sebastian Dröge
37713c3388 pad: Log pad offsets as signed times 2016-06-11 22:18:22 +03:00
Tim-Philipp Müller
665de91347 gstconfig.h.in: indent #if #else jungle for better readability 2016-06-09 17:48:40 +01:00
Sebastian Dröge
1dbb27f3a7 utils: Add gst_pad_link_maybe_ghosting() for consistency
We already had a _full() version, but having that alone seems inconsistent.
Add a non-full version that mirrors the behaviour of gst_pad_link() vs
gst_pad_link_full().
2016-06-08 12:12:28 +03:00
Tim-Philipp Müller
56b9290073 deviceprovider: remove base_class_finalize function
It's not going to get called anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=765540
2016-06-04 13:35:12 +01:00
Tim-Philipp Müller
38c74e41c7 element: remove base_class_finalize_func which is never called
Won't be called for static types, so no point keeping it around.

https://bugzilla.gnome.org/show_bug.cgi?id=765540
2016-06-04 13:11:55 +01:00
Guillaume Desmottes
4a41468ce7 Use MAY_BE_LEAKED_FLAG
This helps having "make check" passing with the leaks tracer enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=766008
2016-06-02 23:14:15 +01:00
Guillaume Desmottes
21070c8114 tracing: add hooks when objects or miniobjects are created and destroyed
https://bugzilla.gnome.org/show_bug.cgi?id=765052
2016-06-02 23:10:44 +01:00
Guillaume Desmottes
194964b4e0 gst_deinit: move down tracers cleaning
We want the tracer detecting leaks to be finalized as late as possible
to give the chance to other gst components to be properly cleaned first.

https://bugzilla.gnome.org/show_bug.cgi?id=765052
2016-06-02 23:08:04 +01:00
Guillaume Desmottes
aa336008b3 tracerrecord: allow G_TYPE_POINTER for field types
Tracers may want to display the address of an object.

https://bugzilla.gnome.org/show_bug.cgi?id=765052
2016-06-02 22:53:28 +01:00
Stefan Sauer
b23cb42ae9 docs: xref the free function and expand allocation query docs
Add xrefs for how to parse pool details from an allocation query.
2016-05-30 02:04:18 -07:00
Nicolas Dufresne
446778464b object: Notify name change when using _set_name()
There was a 0.11 FIXME about notifying the name change or removing that
function. Clearly we can't remove this function, so let's notify it.

https://bugzilla.gnome.org/show_bug.cgi?id=766923
2016-05-26 15:36:05 -04:00
Edward Hervey
6bfb88b410 gst_private: Fix gstconfig include
Since it's a generated header, we need to specify the gst subdir so
that it gets properly included in out-of-dir compilation
2016-05-25 15:31:52 +02:00
Tim-Philipp Müller
5628f7ea73 gst: make sure to include gstconfig.h also in gst_private.h
For GST_EXPORT define and also things like GST_DISABLE_REGISTRY.
Hopefully fixes the following build failure on cerbero-cross-mingw32:
helpers/gst-plugin-scanner.c:50: undefined reference to `_imp___gst_disable_registry_cache'
2016-05-25 10:48:05 +01:00
Tim-Philipp Müller
0274650e42 g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.
2016-05-24 00:40:27 +01:00
Tim-Philipp Müller
af47500d12 gst: g-i: pass compiler with quotes
So CC="ccache gcc" works properly.
2016-05-23 21:15:48 +01:00
Ray Strode
4152f266f7 gst: attempt to fix/track-down mysterious gnome-continuous build failures 2016-05-23 21:08:07 +01:00
Tim-Philipp Müller
e0de5ed915 iterator: only unset GValue if it was inited
And add some function guards. From GLib 2.48 on it is
allowed to pass an uninitialised GValue to g_value_unset().

https://bugzilla.gnome.org/show_bug.cgi?id=763762
2016-05-23 18:09:48 +01:00
Nirbheek Chauhan
1c8711816e gst/parse: Also pass -DGST_EXPORTS here
This static library gets included directly into libgstreamer-1.0.so, so it needs
the same GST_EXPORTS definition as the rest of the code that's compiled into
that otherwise it will try to find the constants it uses from gstinfo via DLL
importing (__declspec(dllimport)).

Fixes https://ci.gstreamer.net/job/cerbero-cross-mingw32/4393/
2016-05-23 14:24:16 +01:00
Nirbheek Chauhan
161eee6694 gstconfig.h: Always use dllexport/import on Windows
__declspec(dllexport/import) are supported by GCC and are needed for
properly generating code that fetches the values of constants from DLLs
built with __declspec(dllexport) which happens when anything using
GST_EXPORT is built with MSVC.

See: https://msdn.microsoft.com/en-us/library/619w14ds.aspx

Essentially, if you built gstreamer with MSVC and then tried to use
constants from it (such as GST_TYPE_CAPS) in a plugin, GCC would
retrieve the address of the value instead of the value itself.
2016-05-23 12:13:53 +01:00
Guillaume Desmottes
56ee365077 (mini)object: add MAY_BE_LEAKED flag
https://bugzilla.gnome.org/show_bug.cgi?id=766008
2016-05-20 09:11:08 +01:00
Tim-Philipp Müller
ef1444cfe4 bin: emit deep-element-{added,removed} for children of newly-added/removed bin
https://bugzilla.gnome.org/show_bug.cgi?id=578933
2016-05-16 09:10:09 +01:00
Tim-Philipp Müller
81dec8cc4d bin: add "deep-element-added" and "deep-element-removed" signals
This means applications and bin sub-classes can easily track when
a new child element is added to the pipeline sub-hierarchy or
removed.

Currently doesn't signal deep added/removed for elements inside
a bin if a bin is added/removed.

https://bugzilla.gnome.org/show_bug.cgi?id=578933
2016-05-16 09:10:09 +01:00
Sebastian Dröge
edb27a8ec2 pad: Improve IDLE probe docs
Make it explicit that the pad is only blocked while the callback is running,
and the pad will be unblocked again once the callback returned.

If BLOCK and IDLE behaviour is needed, both need to be used.

https://bugzilla.gnome.org/show_bug.cgi?id=766002
2016-05-15 15:02:49 +03:00
Jan Schmidt
174a5e93e2 bin: Fix EOS forwarding on PLAYING->PLAYING
When doing a transition from PLAYING to PLAYING, we will fail
to forward an EOS message on the bus, and noone else will ever
send it because there'll be no actual state changed message.

Allow EOS through directly in that case.
2016-05-14 23:46:47 +10:00
Edward Hervey
794944f779 pad: Don't drop LATENCY queries with default implementation
If there is only one pad in the internal pads, when folding for
LATENCY queries it will just drop the response if it's not live.

This is maybe not the proper fix, but it will just accept the first
peer responses, and if there are any other pads, it will only take
them into account if the response is live.

This *should* properly handle the aggregation/folding behaviour of
multiple live peer responses, while at the same time handling the
simple one-pad-only-and-forward use-case

https://bugzilla.gnome.org/show_bug.cgi?id=766360
2016-05-13 11:36:12 +02:00
Jan Schmidt
fe3180dcca debug: Instantiate GType when dumping debug categories.
A lot of debug categories are declared in element class_init
functions, which don't get run until the element is first created
(not just registered in the plugin load function). This means
that --gst-debug-help doesn't print out a lot of categories.

Creating an instance of each element from the element factory
makes them visible, at some extra cost - 2-3 times longer, which can
be a full second or two of extra waiting. Yikes!

https://bugzilla.gnome.org/show_bug.cgi?id=741001
2016-05-13 18:05:39 +10:00
Wonchul Lee
58f964da96 debugutils: fix warning on enum properties printing
https://bugzilla.gnome.org/show_bug.cgi?id=766251
2016-05-11 10:02:49 +03:00
Sebastian Dröge
14f71d2e27 pad: Fix pad state when deactivating from one mode and then trying to activate another and failing
When activating a pad in PULL mode, it might already be in PUSH mode. We now
first try to deactivate it from PUSH mode and then try to activate it in PULL
mode. If the activation fails, we would set the pad to flushing and set it
back to its old mode. However the old mode is wrong, the pad is not in PUSH
mode anymore but in NONE mode.

This fixes e.g. typefind in decodebin reactivating PUSH/PULL mode if upstream
actually fails to go into PULL mode after first PUSHING data to typefind.
2016-05-10 15:07:51 +03:00
Guillaume Desmottes
30ee36e630 utils: fix element leak in find_common_root()
The root element was not unreffed when iterating over ancestors.

https://bugzilla.gnome.org/show_bug.cgi?id=765961
2016-05-04 12:03:53 +03:00
Guillaume Desmottes
0ff10ac3ca uri: unref instead of using _gst_uri_free() directly
This confuses gst_tracing as we shortcut the mini object reference
system.

https://bugzilla.gnome.org/show_bug.cgi?id=765958
2016-05-04 10:08:24 +03:00
Guillaume Desmottes
782bc97e6f deviceproviderfactory: fix factory leak
The code path when early returning was leaking the extra reference on
the factory.

https://bugzilla.gnome.org/show_bug.cgi?id=765904
2016-05-03 10:49:24 +03:00
Tim-Philipp Müller
c7bb52934e query: fix compiler warning
C4146: unary minus operator applied to unsigned type, result still unsigned
2016-05-02 10:53:04 +01:00
Tim-Philipp Müller
12a1418f7f Fix some nonsensical g-i annotations 2016-04-30 14:15:08 +01:00
Sebastian Dröge
8177173db0 element: Add gst_element_call_async()
This calls a function from another thread, asynchronously. This is to be
used for cases when a state change has to be performed from a streaming
thread, directly via gst_element_set_state() or indirectly e.g. via SEEK
events.

Calling those functions directly from the streaming thread will cause
deadlocks in many situations, as they might involve waiting for the
streaming thread to shut down from this very streaming thread.

This is mostly a convenience function around a GThreadPool and is for example
used by GstBin to continue asynchronous state changes.

https://bugzilla.gnome.org/show_bug.cgi?id=760532
2016-04-27 18:51:33 +03:00
Guillaume Desmottes
8daad351a4 caps: add cleanup priv function
Those are allocated in _priv_gst_caps_initialize() so it makes
sense to have a symetric cleanup functions called by gst_deinit().

https://bugzilla.gnome.org/show_bug.cgi?id=765606
2016-04-26 14:29:08 +01:00
Guillaume Desmottes
21a2b26bb2 capsfeature: add cleanup priv function
Those are allocated in _priv_gst_caps_features_initialize() so it makes
sense to have a symetric cleanup functions called by gst_deinit().

https://bugzilla.gnome.org/show_bug.cgi?id=765606
2016-04-26 14:29:01 +01:00
Sebastian Dröge
2076be19ed datetime: Sanity check year, month and day when parsing ISO-8601 strings
Passing years > 9999, months > 12 or days > 31 to gst_date_time_new() will
cause an assertion and generally does not make much sense. Instead consider it
as a parsing error like hours > 24 and return NULL.
2016-04-21 13:49:32 +03:00
Guillaume Desmottes
1ea831bd6c allocator: add cleanup method
Make tracking memory leaks easier.

https://bugzilla.gnome.org/show_bug.cgi?id=765212
2016-04-18 11:33:32 -04:00
Sebastian Dröge
3f3af84a8f meta: Warn if a meta implementation is registered without init function
This previously caused uninitialized memory unless something else was
initializing all the fields explicitly to something.

To be on the safe side, we also allocate metas without init function to all
zeroes now as it was relatively common.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:21:15 +03:00
Tim-Philipp Müller
6e3fb7af52 element: add API to get property change notifications via messages
Be notified in the application thread via bus messages about
notify::* and deep-notify::* property changes, instead of
having to deal with it in a non-application thread.

API: gst_element_add_property_notify_watch()
API: gst_element_add_property_deep_notify_watch()
API: gst_element_remove_property_notify_watch()
API: gst_message_new_property_notify()
API: gst_message_parse_property_notify()
API: GST_MESSAGE_PROPERTY_NOTIFY

https://bugzilla.gnome.org/show_bug.cgi?id=763142
2016-04-08 13:27:59 +01:00
Tim-Philipp Müller
e3cc67a133 memory: fix C++ compiler warnings with GST_MAP_INFO_INIT 2016-04-06 17:46:31 +01:00
Matthew Waters
e8c8c27ae8 utils: check the correct element's state on ghosting pads
Checking the current element's state when we're adding pads to
the parent element is checking the wrong thing.

Silences a 'attempting to add an inactive pad to a running element'
warning when adding a ghost pad to a running parent bin of the parent
bin of the element.

https://bugzilla.gnome.org/show_bug.cgi?id=764176
2016-04-06 23:26:41 +10:00
Matthew Waters
f876306638 utils: expose pad_link_maybe_ghosting
This is a useful function to automatically add ghost pads when linking
two elements across bin boundaries without know their exact parentage.

e.g. when using gst_parse_bin_from_description (with or without it ghosting pads),
one can simply retreive the src/sink pads from the bin to link to another pad.

Similar functionality is provided by gst_element_link_pads{_full}() however only
by pad name rather than by actual pads.

API: gst_pad_link_maybe_ghosting_full

https://bugzilla.gnome.org/show_bug.cgi?id=764176
2016-04-06 23:26:41 +10:00
Mark Combellack
b8f2929dac GST_REFCOUNTING: Add logging of pointer address for dispose, finalize, etc messages
Updated the GST_REFCOUNTING logging so that it includes the pointer
address of the object that is being disposed or finalized.

With this change is is then possible to match up GST_REFCOUNTING log messages
for object allocation/disposal/finalization. This can help with diagnosing
"memory leaks" in applications that have not correctly disposed of all the
GStreamer objects it creates.

https://bugzilla.gnome.org/show_bug.cgi?id=749427
2016-04-02 18:18:10 +01:00
Luis de Bethencourt
1bb699446a info: only open log file when adding it to the log function
This avoids the leak of opening it and then not passing it or closing it
before it goes out of scope.
2016-04-02 10:47:57 +01:00
Sebastian Dröge
c32ea3cb58 clock: Return FALSE in all paths that don't set out parameters in gst_clock_add_observation_unapplied()
It returned TRUE when regression failed, while not setting any of the out
parameters. This caused uninitialized data from the stack to be used for
setting the clock calibration.
2016-04-02 01:34:46 +03:00
Thiago Santos
368ee8a336 pad: rework probe's hook_marshall function
PUSH and PULL mode have opposite scenarios for IDLE and BLOCK
probes.

For PUSH it will BLOCK with some data type and IDLE won't have a type.
For PULL it will BLOCK before getting some data and will be IDLE when
some data is obtained.

The check in hook_marshall was specific for PUSH mode and would cause
PULL probes to fail to be called. Adding different checks for the mode
to fix this issue.

https://bugzilla.gnome.org/show_bug.cgi?id=761211
2016-03-28 11:14:41 -03:00
Thiago Santos
45b0e7aa16 pad: consider PROBE_TYPE_EVENT_FLUSH when using PROBE_TYPE_ALL_BOTH
When GST_PAD_PROBE_EVENT_FLUSH is used, the probes already have
a data type and it is not needed to automatically add the default
types.

https://bugzilla.gnome.org/show_bug.cgi?id=762330
2016-03-28 10:54:11 -03:00
Tim-Philipp Müller
9e83680563 debugutils: fix enum/flag properties printing for elements
We want to use the flag/enum nicks here, not only because they
are shorter but also because in case of element-specific enums
and flags we abuse the enum/flag name field for the description,
and we don't want that printed in the dot file.

https://bugzilla.gnome.org/show_bug.cgi?id=763814
2016-03-26 17:21:51 +00:00
Tim-Philipp Müller
a35dfb1b16 alloctrace: print size and allocator details for buffers and memories 2016-03-26 13:46:58 +00:00
Tim-Philipp Müller
50888062ba info: make it possible to remove default log handler before gst_init()
Make sure it's not even added then, so that we never output
anything via the default log handler then.

https://bugzilla.gnome.org/show_bug.cgi?id=751538
2016-03-26 11:40:43 +00:00
Tim-Philipp Müller
9df4bda65d miniobject, memory, uri: warn on unused return value of some funcs
Make compiler issue a warning for common beginner mistakes such as:

  ...
  gst_buffer_make_writable (buf);
  gst_buffer_map (buf, &map, GST_MAP_WRITE);
  ...

and similar. Only do this for some functions for now.
2016-03-26 11:35:39 +00:00
Tim-Philipp Müller
f02d09c362 registry: allow plugin and feature filter funcs to call registry API
Don't keep the registry locked whilst iterating over the plugins
or features with a filter function. This would deadlock if the
callback tried to access the registry from the function. Instead,
make a copy of the feature/plugin list and then filter it without
holding the registry lock. This is still considerably faster than
the alternative which would be to use a GstIterator.

https://bugzilla.gnome.org/show_bug.cgi?id=756738
2016-03-26 11:13:09 +00:00
Carlos Rafael Giani
fdd5d22828 parse-launch: Add flag for placing elements in a bin instead of a pipeline
By default, gst_parse_launch_full() creates a GstPipeline if there's more
than one toplevel element. Add a flag to let it use a GstBin instead.

Also fix the parser to let it use this flag for GST_TYPE_ELEMENT property
values, to avoid having GstPipelines inside other GstPipelines.

https://bugzilla.gnome.org/show_bug.cgi?id=763457
2016-03-24 14:50:12 +02:00
Vineeth TM
8cc3e908c3 gstreamer: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763020
2016-03-24 14:43:41 +02:00
Stian Selnes
7dd76b626e pad: Fix race between gst_element_remove_pad and state change
When going from READY to NULL all element pads are deactivated. If
simultaneously the pad is being removed from the element with
gst_element_remove_pad() and the pad is unparented, there is a race
where the deactivation will assert (g_critical) if the parent is lost at
the wrong time.

The proposed fix will check parent only once and retain it to avoid the
race.

https://bugzilla.gnome.org/show_bug.cgi?id=761912
2016-03-24 14:39:47 +02:00
Sebastian Dröge
d7c8ce0947 preset: Use GST_PRESET_PATH as an extension of the system path, not a replacement of the user path
First load all system presets, then all from the environment variable, then
from the app directory, then from the user directory. Any one in the chain
with the highest version completely replaces all previous ones, later ones
with lower versions are merged in without replacing existing presets.

This is basically the same behaviour as before, just that GST_PRESET_PATH is
inserted as another source of directories between the system and app presets.

It was added in ca08af1f17, but was
accidentially overriding the user preset path there. Which caused inconsistent
behaviour as new presets were still stored in the system path, just not loaded
from there. Meaning you could store a new preset (in the user path), just for
GstPreset to not find it anymore later (because it only looked in the
GST_PRESET_PATH instead of the user path).

https://bugzilla.gnome.org/show_bug.cgi?id=764034
2016-03-22 19:32:48 +02:00
Aurélien Zanelli
94036e86c0 utils: add 'transfer full' annotation to gst_pad_peer_query_caps
https://bugzilla.gnome.org/show_bug.cgi?id=763912
2016-03-21 10:23:53 +02:00
Aurélien Zanelli
b7cffa4522 pad: add 'transfer full' and 'nullable' annotations to gst_pad_get_current_caps
and also change the description accordingly since function returns an
incremented caps object or NULL if there is no caps set.

https://bugzilla.gnome.org/show_bug.cgi?id=763912
2016-03-21 10:23:53 +02:00
Ben Iofel
53f2fb93e8 utils: fix gir annotation for gst_element_query_convert()
https://bugzilla.gnome.org/show_bug.cgi?id=763895
2016-03-18 20:35:27 +00:00
Carlos Rafael Giani
f70dc95c35 docs: Flesh out element and object macro accessor docs a bit
https://bugzilla.gnome.org/show_bug.cgi?id=763213
2016-03-10 10:07:07 +00:00
Víctor Manuel Jáquez Leal
c1f2775dcb gstbuffer: fix GstParentBufferMeta GType name
The alias define GST_TYPE_PARENT_BUFFER_META_API_TYPE is wrong and
breaks the usage of gst_buffer_get_parent_buffer_meta().

This patch fixes the GType alias and make another alias to keep the API
compatibility guarded by GST_DISABLE_DEPRECATED.

Also added a unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=763112
2016-03-07 12:02:00 +01:00
Sebastian Dröge
c904e00661 tracerrecord: Remove useless NULL check and add assertion for making assumptions explicit
gst_structure_new_empty() is not returning NULL in any valid scenarios,
checking for NULL here is useless. Especially because we would dereference any
NULL right after the NULL check again.
CID 1352037.

We previously check if the string ends on .class, as such strrchr() should
return something non-NULL. Add an assertion for that.
CID 1349642.
2016-03-02 10:37:09 +02:00
Tim-Philipp Müller
c7734d2711 element: minor docs fix
Make gtk-doc happy.
2016-03-01 19:50:26 +00:00
Sebastian Dröge
82e529cea5 Revert "bus: change GstBusSource to hold a weak ref to GstBus"
This reverts commit 894c67e642.
2016-02-29 23:33:03 +02:00
Sebastian Dröge
90b1b1dd96 Revert "bus: Make sure to remove the GPollFD from the GSources when destroying the bus"
This reverts commit 05700a7082.
2016-02-29 23:32:58 +02:00
Sebastian Dröge
01b2476d36 element: Remove GST_STATE_LOCK_FULL() / UNLOCK_FULL()
There is no corresponding API for that in GLib and nobody could've ever used
these macros without compiler errors anyway.
2016-02-29 17:07:26 +02:00
Sebastian Dröge
05700a7082 bus: Make sure to remove the GPollFD from the GSources when destroying the bus
Otherwise the GSource can look into our already destroyed bus where the
GPollFD is stored.

https://bugzilla.gnome.org/show_bug.cgi?id=762849
2016-02-29 13:41:15 +02:00
Tim-Philipp Müller
f02e52ba3f taglist: add guard to check writability when removing tags from a taglist
https://bugzilla.gnome.org/show_bug.cgi?id=762793
2016-02-28 13:59:48 +00:00
Tim-Philipp Müller
fa12d23a17 element: add gst_element_class_add_static_pad_template()
Pretty much every single element does

  gst_element_class_add_pad_template (element_class,
      gst_static_pad_template_get (&some_templ));

which is both confusing and unnecessary. We might just
as well add a function to do that in one step.

https://bugzilla.gnome.org/show_bug.cgi?id=762778
2016-02-28 13:10:03 +00:00
James Stevenson
5048155f57 bus: Prevent gst_bus_add_watch_full_unlocked from a segfault if priv->poll == NULL
This happens if the process runs out of file descriptors. Better print
a critical warning instead of just crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=762702
2016-02-26 12:11:30 +02:00
Thiago Santos
894c67e642 bus: change GstBusSource to hold a weak ref to GstBus
When holding a regular ref it will cause the GstBus to never
reach 0 references and it won't be destroyed unless the application
explicitly calls gst_bus_remove_signal_watch().

Switching to weakref will allow the GstBus to be destroyed.
The application is still responsible for destroying the
GSource.

https://bugzilla.gnome.org/show_bug.cgi?id=762552
2016-02-25 14:08:50 -03:00
Edward Hervey
f7cba27157 buffer: Check return value of gst_memory_map()
Only do memory operations if the memory was succesfully map'ed

https://bugzilla.gnome.org/show_bug.cgi?id=728326
2016-02-23 17:23:43 +01:00
Adam Miartus
44423e8af3 taglist: add GST_TAG_CONDUCTOR
This is useful for metadata which explicitely distinguishes
between artist/composer and conductor.

https://bugzilla.gnome.org/show_bug.cgi?id=762450
2016-02-22 21:12:37 +00:00
Mark Nauwelaerts
0f63073c23 event: add some more documentation on stream-id
... where it might end up being used for.
2016-02-22 16:21:31 +01:00
Thibault Saunier
7e5a892f89 tracer: Initialize GstTracer _priv_tracers and quarks unconditionnally
Some people might use tracer hooks even if GST_TRACER_PLUGINS is not
set.

https://bugzilla.gnome.org/show_bug.cgi?id=760979
2016-02-22 13:23:24 +01:00
Nirbheek Chauhan
806dbeeef3 Whenever we include windows.h, also define WIN32_LEAN_AND_MEAN
This reduces the number of symbols and code pulled in drastically
2016-02-20 10:07:42 +00:00
Nirbheek Chauhan
55f9406f30 printf: On MSVC, also define HAVE_STDINT_H_WITH_UINTMAX
MSVC provides stdint.h but not inttypes.h, and we need to include stdint.h to
get intmax_t
2016-02-20 10:07:37 +00:00
Nirbheek Chauhan
c27e70e83f plugin: Only check for S_IFBLK if it is defined
Windows does not define S_IFBLK since it doesn't have block devices
2016-02-20 10:07:25 +00:00
Sebastian Dröge
42968bc949 Revert "pad: PULL probes are called without a buffer so don't require any of the data flags to be set"
This reverts commit b89fa4786b.

The changes break various tests.
2016-02-18 11:43:22 +02:00
Sebastian Dröge
5664fd7635 buffer: Protect against failing to map input memory when merging memories
https://bugzilla.gnome.org/show_bug.cgi?id=762239
2016-02-18 11:09:36 +02:00
Sebastian Dröge
b89fa4786b pad: PULL probes are called without a buffer so don't require any of the data flags to be set
https://bugzilla.gnome.org/show_bug.cgi?id=761211
2016-02-18 09:44:00 +02:00
Sebastian Dröge
a0b3a7f658 Revert "element: Don't hold state lock all the time while sending an event"
This reverts commit b427997119.

It breaks things that used to work before, even if the change by itself is
correct and the previous code is just working around deeper bugs in the async
state change code. Let's go back to what previously worked and then fix async
state changes in general.

https://bugzilla.gnome.org/show_bug.cgi?id=760532
2016-02-17 16:41:02 +02:00
Edward Hervey
899060d579 Revert "ghostpad: Do nothing in _internal_activate_push_default"
That commit would break scheduling reconfiguration with ghostpads

This reverts commit ab55ad7eaa.
2016-02-17 15:26:49 +01:00
Stian Selnes
ab55ad7eaa ghostpad: Do nothing in _internal_activate_push_default
When calling gst_pad_activate_mode() on a ghostpad
gst_ghost_pad_activate_push_default() will be called. This will call
gst_pad_activate_mode() on the proxypad (which is internal of the
ghostpad), calling gst_ghost_pad_internal_activate_push_default(), which
again will call gst_pad_activate_mode() on the original ghostpad.

By simply returning TRUE in
gst_ghost_pad_internal_activate_push_default() the redundant call to
gst_pad_activate_mode() (for the same pad) is avoided.

https://bugzilla.gnome.org/show_bug.cgi?id=761913
2016-02-17 12:26:12 +02:00
Thiago Santos
6f4bb8850b registrychunks: remove unused macro
macro was added in 2011 and isn't used anymore
2016-02-16 17:53:10 -03:00
Evan Nemerson
d11e657412 docs: annotate C examples as such
https://bugzilla.gnome.org/show_bug.cgi?id=731292
2016-02-15 17:45:15 +00:00
Thiago Santos
5b64123c54 protection/harness/systemclock: move declaration out of for loop initialization
C90 compilers complain about it
error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode

Also run gst-indent on systemclock tests.
2016-02-15 12:33:46 -03:00
Víctor Manuel Jáquez Leal
b92d639fbf bufferpool: pass acquire params to alloc_buffer
When allocating a new buffer in the pool, both the do_alloc_buffer() and the
vmethod, alloc_buffer(), receive the parameter GstBufferPoolAcquireParams.

Nonetheless, when default_acquire_buffer() calls the do_alloc_buffer() it does
not pass the received GstBufferPoolAcquireParams, so when the user pass those
parameters they are ignored by alloc_buffer() vmethod.

This one-liner patch pass the received acquire params to do_alloc_buffer().

https://bugzilla.gnome.org/show_bug.cgi?id=761824
2016-02-11 12:11:20 -05:00
Stian Selnes
2b0ff13d07 systemclock: Fix wait/unschedule race
Fixes a race where an entry is set to BUSY in
gst_system_clock_id_wait_jitter() and is UNSCHEDULED before
gst_system_clock_id_wait_jitter_unlocked() starts processing it. The
wakeup added by gst_system_clock_id_unschedule() must be cleaned up.

Two stress tests are added. One test that triggers the specific issue
described above. The second stresses the code path where a wait is
rescheduled because the poll returned early.

https://bugzilla.gnome.org/show_bug.cgi?id=761586
2016-02-10 08:59:33 -03:00
Thiago Santos
77a98d98cb systemclock: handle unschedule of late entries
If the clockentry is too late and is unscheduled before it gets
a change to detect its lateness the wakeup count and the poll are
used but never properly cleaned up. This leaves it in a dirty state
that is going to mess with the next clock entry waiting requests.

https://bugzilla.gnome.org/show_bug.cgi?id=761586
2016-02-10 08:59:33 -03:00
Tim-Philipp Müller
f90126a62e uri: add guard to make sure gstreamer is initialized
https://bugzilla.gnome.org/show_bug.cgi?id=761448
2016-02-02 10:56:35 +00:00
Tim-Philipp Müller
63421675b1 tracer: rename GST_TRACER_PLUGINS env var to GST_TRACERS 2016-01-22 12:50:08 +00:00
Stefan Sauer
ec75b68984 tracerrecord: don't leak the spec structures
Change the gst_tracer_record_new() api to take the parameters the make the
spec structure directly. This allows us to own the top-level structure and
also collect the args so that we can take ownership of the sub-structures.

https://bugzilla.gnome.org/show_bug.cgi?id=760821
2016-01-22 10:07:26 +01:00
Tim-Philipp Müller
05a9655523 device: fix comparison in _has_classesv()
We're comparing a pointer type with '\0' here, which
probably isn't right, and the loop condition made sure
that classes[0] is != NULL already, so it's pointless.
Was probaby meant to check if the string pointed to is
not empty, so make it do that instead.
2016-01-21 15:45:30 +00:00
Florin Apostol
f0e94b4cdf systemclock: fixed race condition in handling alarms
When choosing the first entry from the list, gst_system_clock_async_thread
must set the entry state to busy before releasing the clock lock. Otherwise
a new entry could be added to the beginning of the list and
gst_system_clock_async_thread will be unaware and keep waiting on the entry
it has already chosen.

Also improved messages about expected state and bumped them to ERROR level
to detect unexpected state changes.

https://bugzilla.gnome.org/show_bug.cgi?id=760757
2016-01-20 13:47:20 +02:00
Tim-Philipp Müller
5ce5549ce0 utils: remove duplicate check 2016-01-20 11:07:17 +00:00
Stefan Sauer
eaa992825d gstvalue: remove a half finishesh sentence in the docs
No idea what was the idea here. SO lets just drop it.
2016-01-20 10:02:37 +01:00
Vineeth TM
7738236968 tracerrecord: Fix self->spec structure invalid free
self->spec is got using g_value_get_boxed(), which is a transfer none function.
So the same should not be freed, which is resulting in wrong behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=760821
2016-01-20 09:28:07 +01:00
Vineeth TM
fc02815459 tracerrecord: Initialise flags to avoid wrong comparision
GstTracerValueFlags is not being initialized and the same could result in wrong
comparision and behavior. Hence initializing it to GST_TRACER_VALUE_FLAGS_NONE.

https://bugzilla.gnome.org/show_bug.cgi?id=760821
2016-01-20 09:25:44 +01:00
Stefan Sauer
4859494945 tracer: add an internal ptr format for tracer serialisation
We need to apply the string wrapping that value serialisation does also in the
tracer logging, otherwise we can't parse nested structures.
2016-01-20 09:14:12 +01:00
Luis de Bethencourt
227c387b43 tracerrecord: avoid overwriting value
res value is overwritten, remove the assignment.
priv__gst_structure_append_template_to_gstring () always returns TRUE
anyway.

CID 1349645
2016-01-19 12:04:19 +00:00
Edward Hervey
128760f246 tracerrecord: Disable logging if GST_DISABLE_GST_DEBUG
Make the gst_tracer_record_log() a no-op if the gst-debug subsystem
is disabled.
2016-01-19 11:12:21 +01:00
Tim-Philipp Müller
eb4c5498b5 value: fail flag deserialization on invalid flag names 2016-01-18 19:39:11 +00:00
Vineeth TM
843d120c2f gst: ref/unref new enum types in gst_init/deinit
https://bugzilla.gnome.org/show_bug.cgi?id=760767
2016-01-18 09:11:00 +02:00
Philip Van Hoof
cb625698a2 tracer.h: don't include private noinst header gsttracerutils.h in a public header
https://bugzilla.gnome.org/show_bug.cgi?id=760732
2016-01-17 00:00:51 +00:00
Stefan Sauer
d15da9e221 tracer: update the docs
Add the new enum and flags. Remove the GstTracerRecordPrivate.
2016-01-16 21:04:46 +01:00
Stefan Sauer
af91d23204 tracer: use the new flags to create the optional field in the format string
This spares us explicitly listing the field in the spec. and thus hide this
implementation detail.
2016-01-16 19:21:00 +01:00
Stefan Sauer
8cd76a918a tracer: add a GstTracerValueFlags and replace strings
This allows us to document the flags and makes the logs a bit smaller.
2016-01-16 18:52:32 +01:00
Tim-Philipp Müller
dfb782ca97 message: add function guard to gst_message_set_buffering_stats()
https://bugzilla.gnome.org/show_bug.cgi?id=760704
2016-01-16 16:01:38 +00:00
Tim-Philipp Müller
8b88fc487f gst.h: Don't spew warnings if GST_USE_UNSTABLE_API is not defined
Only hide GstTracer and GstTracerRecord API behind GST_USE_UNSTABLE_API,
but don't spew any warnings, otherwise everyone has to define this
to avoid compiler warnings.

This reverts parts of commit 89ee5d948d.
2016-01-16 16:00:16 +00:00
Stefan Sauer
89ee5d948d tracer: add a GFlag for the tracer scope
Port all tracers. Add the GST_USE_UNSTABLE_API flag to the internal CFLAGS so
that we don't have to specify this for gir, docs, mkenum, ...
2016-01-16 13:31:51 +01:00
Stefan Sauer
10b78d872b tracerrecord: add a log record class
We use this class to register tracer log entry metadata and build a log
template. With the log template we can serialize log data very efficiently.
This also simplifies the logging code, since that is now a simple varargs
function that is not exposing the implementation details.

Add docs for the new class and basic tests.

Remove the previous log handler.

Fixes #760267
2016-01-15 21:54:01 +01:00
Nirbheek Chauhan
20c89fa8bc GstDeviceMonitor: Clarify the behaviour of gst_device_monitor_add_filter 2016-01-14 22:07:51 +00:00
Nirbheek Chauhan
4d6c7ccd08 GstDeviceMonitor: Don't remove unmatched class filters
If no providers for a particular class could be found, then removing unmatched
filters would cause all devices to be returned instead which is not at all what
the user intended. We still return 0 for unmatched filters.
2016-01-14 22:07:51 +00:00
Matthew Waters
347734e529 info: expose debugging printf functions
Other gst libraries and/or elements may want to add some debug logging to an
external debug system or implement delayed debugging for performance reasons.

Exposes the internal __gst_vasprintf as gst_info_vasprintf which has a fallback
to g_vasprintf if the debug system is disabled.

API: gst_info_vasprintf
API: gst_info_strdup_vprintf
API: gst_info_strdup_printf

https://bugzilla.gnome.org/show_bug.cgi?id=760421
2016-01-13 11:56:14 +11:00
Tim-Philipp Müller
4febebb962 info: add buffer list support to GST_PTR_FORMAT 2016-01-08 19:25:24 +00:00
Aurélien Zanelli
6b71877692 controlsource: fix GetValue and GetValueArray documentation
GstControlSourceGetValue() value paramater is a gdouble, not a GValue
and GstControlSourceGetValueArray doesn't return a GstValueArray but
an array of double.

https://bugzilla.gnome.org/show_bug.cgi?id=758668
2016-01-08 18:24:06 +00:00
Stefan Sauer
2f41e7bc6a tracer: harmonize the query hooks
In post hooks always pass the return value as the last param. Pass the query
also to post hooks since it is still alive.
2016-01-07 23:03:48 +01:00
Stefan Sauer
281f792042 tracerutils: update #endif comment
We changed the define, but left the comment inconsistent.
2016-01-07 22:43:58 +01:00
Stefan Sauer
8968af3589 tracerutils: document the tracer hook functions
Document all tracer hook function pointer together with the detail string that
one needs to use with gst_tracing_register_hook().
2016-01-07 22:41:32 +01:00
Sebastian Dröge
9d91ad0b85 tracer: Use GST_DISABLE_GST_TRACER_HOOKS instead of GST_DISABLE_GST_DEBUG everywhere
Previously we used the latter one still for the tracer utility code, causing
undefined references in the resulting binary if the debugging system was
disabled but the tracer system not.
2016-01-07 18:46:21 +02:00
Sebastian Dröge
d787105fd5 gst: Rename _priv_gst_info_start_time to _priv_gst_start_time and initialize it centrally
It's used by the debugging and tracer subsystem and in various files, make it
a central thing that is initialized independ of the existence of those
subsystems.
2016-01-07 18:41:25 +02:00
Stefan Sauer
555f48da4b structure: log a warning if we can't serialize a field
The function always returns TRUE right now, so atleast log something.
2016-01-06 21:25:32 +01:00
Stefan Sauer
5e40639be7 tracer: make gst_tracing_register_hook_id static
We don't need to expose this as public API. Change the only plugin that was
using it.
2016-01-06 20:46:58 +01:00
Sebastian Dröge
5fe1b7efe3 clock: adjust/unadjust_with_calibration() have a clock parameter but it's useless
Document this, for 2.0 we should just remove that parameter.
2016-01-06 16:25:38 +02:00
Sebastian Dröge
fb01dd000b clock: Add gst_clock_unadjust_with_calibration()
We already have gst_clock_adjust_with_calibration() and
gst_clock_unadjust_unlocked(), having the other variant is useful.
2016-01-06 16:25:38 +02:00
Stefan Sauer
efa316d666 docs: add the tracer to the docs
Add GstTracer and GstTracerFactory to the core docs.
2016-01-06 13:05:53 +01:00
Stefan Sauer
1af0a3ce6f tracerutils: move header to noinst section
This is internal code, that is only to be used in core.
2016-01-06 11:37:12 +01:00
Stefan Sauer
e5ca47236e configure: add a new option to disable the tracer hooks
This was previously done via {enable,disable}-gst-debug. Since both subsystems
are independent having separate options is better.
2016-01-06 11:33:34 +01:00
Sebastian Dröge
01ba6d40a8 clock: Fix typo
clocked -> clock
2016-01-05 16:44:53 +02:00
Sebastian Dröge
2f776d679f clock: Don't allow setting an unsynced clock as master 2016-01-05 14:23:26 +02:00
Sebastian Dröge
ab827eca2e clock: Don't try to slave unsynced clocks
They will return useless values from get_time().
2016-01-05 14:21:58 +02:00
Stefan Sauer
bdc60306c7 parse_launch: make nicer log messages
Add two macros to build nicer element/pad name strings. The macros avoid
printing "(NULL)" and print the element type in addition to the name.
2016-01-03 22:58:06 +01:00
Stefan Sauer
46a851b279 parse-launch: warn when still waiting to plug sub-pipelines after no-more-pads
The parse-launch API automagically handles dynamic pads and performs delayed
linking as needed, without any feedback about whether the linking succeeded or
not however. If a delayed dynamic link can't be completed for whatever reason,
parse-launch will simply wait in case a suitable pad appears later. This may
never happen though, in which case the pipeline may just hang forever.

Try to improve this by connecting to the "no-more-pads" signal of any element
with dynamic pads and posting a warning message for the related outstanding
dynamic links when "no-more-pads" is emitted.

Fixes #760003
2016-01-03 22:58:06 +01:00
Tim-Philipp Müller
7c992cfbe0 docs: fix some warnings and add some since markers 2016-01-03 17:50:35 +00:00
Stefan Sauer
583304959a grammar.y: remove trailing whitespace 2016-01-03 11:39:56 +01:00
Tim-Philipp Müller
433581c05a gst: fix typo in comment 2015-12-31 12:20:59 +00:00
Sebastian Dröge
2c272d74fd caps: Add (transfer full) annotation to simplify() and subtract() return value
https://bugzilla.gnome.org/show_bug.cgi?id=759948
2015-12-29 14:32:47 +02:00
Aurélien Zanelli
2ee33237c8 caps: add 'transfer full' annotation to caps returned by interserction functions
To make clear caller is responsible to unref them.

https://bugzilla.gnome.org/show_bug.cgi?id=759948
2015-12-29 14:30:29 +02:00
Xavier Claessens
46f83f5fcd core: Add g_autoptr() support to all types
https://bugzilla.gnome.org/show_bug.cgi?id=754464
2015-12-14 12:06:55 -05:00
Sebastian Dröge
615af0b1b0 element: Unref event if GstElement::send_event() is not implemented
Otherwise we'll take ownership of the event only if it's implemented, and
leak the event in all other situations.
2015-12-14 10:10:04 +01:00
Aurélien Zanelli
51a70dd586 element: unref message in _post_message when there is no implementation
'gst_element_post_message' takes the ownership of the message, so it
shall unref it when there is no post_message implementation. Otherwise
message is leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=759300
2015-12-10 16:44:31 +02:00
Sebastian Dröge
b427997119 element: Don't hold state lock all the time while sending an event
This lock seems to exist only to prevent elements from changing states while
events are being processed. However events are going to be processed
nonetheless in those elements if sent directly via pads, so protection must
already be implemented inside the elements for event handling if it is needed.

As such having the lock here is not very useful and is actually causing
various deadlocks in different situations as described in
https://bugzilla.gnome.org/show_bug.cgi?id=744040
2015-12-10 11:35:05 +02:00
Sebastian Dröge
2d427c75ae bin: Post a LATENCY message with async-handling=TRUE if the PLAYING state is reached
Otherwise each bin might have a different latency in the end, causing
synchronization problems.

The bin will still first handle latency internally as before, but gives the
overall pipeline the opportunity to update the latency of the whole pipeline
afterwards.

https://bugzilla.gnome.org/show_bug.cgi?id=759125
2015-12-09 11:13:22 +02:00
Sebastian Dröge
c247117990 element: Check for an activated pad before adding, not a non-flushing one
The pad could be activated but flushing because of a FLUSH_START event. That's
not what we're looking for here, we want to check for activated pads.

https://bugzilla.gnome.org/show_bug.cgi?id=758928
2015-12-07 12:59:39 +02:00
Wim Taymans
87ab2603da query: fix docs
The allocation query has parameters with the meta API, not flags.
2015-12-04 11:57:45 +01:00
Edward Hervey
56d4650789 pad: Implement GstPadEventFullFunction
API: GstPadEventFullFunction

Returns a GstFlowReturn, allows asynchronous elements to properly
propagate flow returns

https://bugzilla.gnome.org/show_bug.cgi?id=757821
2015-12-02 16:04:03 +01:00
Edward Hervey
e5d5f99a9e gstclock: Fix GST_STIME_ARGS
It wasn't properly handling GST_CLOCK_STIME_NONE and always use the
sign marker (+/-) to make it easier to identify signed values in
logs

https://bugzilla.gnome.org/show_bug.cgi?id=758870
2015-12-01 17:13:41 +01:00
Thibault Saunier
3737466563 controlsource: Annotate get_value[_array] as (method)
As the names clash with gst_object_get_value[_array]

https://bugzilla.gnome.org/show_bug.cgi?id=756950
2015-11-30 23:17:32 +01:00
Nicolas Dufresne
c47e1383ca plugin: Add prefix support to dependencies
This adds a new flags, GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX,
which allow using the names as prefix for plugin depencies.

https://bugzilla.gnome.org/show_bug.cgi?id=758083
2015-11-25 14:26:11 -05:00
Nicolas Dufresne
79b935b304 plugin: Allow device nodes as dependency
This is useful for feature that are produced after probing a specific
node. You want to reload this plugin if the specific node(s) have been
removed, added, or reloaded.

https://bugzilla.gnome.org/show_bug.cgi?id=758080
2015-11-25 14:26:11 -05:00
Nicolas Dufresne
446b3e6ddc plugin: Don't do lossy shift on hash
In plugin is responsible for calculating a hash of the dependencies
in order to determine if the cache should be invalidated or not.
Currently, the hash combining method removes a bit of the original
have before combining with an addition. As we use 32bits for our hash
and shift 1 bit for each file and directory, that resulting hash only
account for the last 32 files. And is more affected by the last file.

Rotating technique (shifting, and adding back the ending bit), can be
use to make the addition non-commutative. In a way that different order
gives different hashes. In this case, I don't preserve this behaviour
because the order in which the files are provided by the OS is
irrelevant.

In most cases, the XOR operation is used to combine hashes. In this
code we use the addition. I decided to preserve the addition because
we make use of non-random hash ((guint) -1) in the algorithm for
matching files that are not really part of the hash (symlinks, special
files). Doing successive XOR on this value, will simply switch from
full ones, to full zero. The XOR used with whitelist has been preserved
as it's based on a fairly randomized hash (g_str_hash).

https://bugzilla.gnome.org/show_bug.cgi?id=758078
2015-11-25 14:26:11 -05:00
Lukasz Forynski
7e2aae7942 info: fix compiler warning with -Wpedantic and gcc 5
Gstreamer compiled with gcc 5.2 and -Wpedantic produces the
following warning:

'ISO C does not support '__FUNCTION__' predefined identifier [-Wpedantic]
  const char *s = __FUNCTION__;'

Since gcc 5 enables C99 by default, use __func__ if it's available
instead of the non-standard __FUNCTION__ (as suggested in [2]).

[1]: https://gcc.gnu.org/gcc-5/changes.html
[2]: https://gcc.gnu.org/gcc-5/porting_to.html

https://bugzilla.gnome.org/show_bug.cgi?id=758541
2015-11-24 09:34:59 +00:00
Ravi Kiran K N
9fbecd6b6d tags: add GST_TAG_PRIVATE_DATA
Can be used to represent private data that may be
contained in tags, such as ID3v2 PRIV frames.

https://bugzilla.gnome.org/show_bug.cgi?id=730926
2015-11-20 19:43:31 +00:00
Vineeth TM
61a8c946ac debugutils: Fix string memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=758207
2015-11-17 00:18:45 -03:00
Heinrich Fink
d59022f508 systemclock: Use mach_time on Apple platforms
On iOS/OSX g_get_current_time was used by default. However, mach_time is
the preferred high-resolution monotonic clock to be used on Apple
platforms.

https://bugzilla.gnome.org/show_bug.cgi?id=758012
2015-11-13 09:23:44 +01:00
Thiago Santos
82c1ec4931 tracer: add element-change-state-pre/post hook
Helps catching when a state change is starting and ending.

It is also possible to track the end of state changes by checking the
async-done or state-change messages.
This is particularly important for elements that do async state changes.
2015-11-12 15:39:26 -03:00
Thiago Santos
d4cab73d09 context: fix some copy and paste leftover in docs 2015-11-10 17:37:22 -03:00
Thiago Santos
e22517567a context: add some more documentation
Add a short paragraph on what means for a context to be persistent
2015-11-10 17:37:22 -03:00
Tim-Philipp Müller
09293bb63f utils: use 'static inline' instead of 'inline static' for gtk-doc
gtk-doc doesn't seem to recognise the former variant.
2015-11-09 18:02:09 +00:00
Tim-Philipp Müller
220dbfc13c docs: remove dummy function declarations with G_INLINE_FUNCTION for gtk-doc
gtk-doc can handle static inline functions just fine these days,
there's no need for this stuff any more.
2015-11-09 17:59:16 +00:00
Thiago Santos
02d88fc3f3 pad: check template caps for proxy pads in accept-caps
Validate that the proxy pad indeed accepts the caps by also
comparing with the pad template caps, otherwise when the pad
had no internally linked pads it would always return true.

https://bugzilla.gnome.org/show_bug.cgi?id=754112
2015-11-06 10:23:34 -03:00
Thibault Saunier
2c132becb4 Fix build with -Werror=maybe-uninitialized 2015-11-06 12:58:42 +01:00
Thibault Saunier
ca08af1f17 preset: Add a GST_PRESET_PATH env variable for presets to be usable uninstalled
And start setting the various uninstalled presets paths.
2015-11-06 12:26:35 +01:00
Jan Schmidt
ca22e60b91 pad: Mark sticky events as sent on not-linked
Instead of re-sending sticky events over and over to a not-linked
pad, mark them as sent the first time. If the not-linked came from
downstream, it already received the events. If the pad is actually
not-linked, the sticky events will be rescheduled when the
pad is linked anyway.
2015-11-01 23:16:44 +11:00
Jan Schmidt
a5001312cd ghostpad: Allow deactivation with no peer.
Allow deactivation in pull-mode, since that implies we
had a peer, activated in pull mode, then the peer disa-peer-ed ;)
2015-10-30 23:25:57 +11:00
Thiago Santos
973cd86c99 element: emit tracer's element-new hook from 'constructed'
It allows to properly emitting it for all newly created elements

https://bugzilla.gnome.org/show_bug.cgi?id=757045
2015-10-29 07:27:35 -03:00
Sebastian Dröge
c47e49e1e3 pad: Unblock blocking pad probes when receiving FLUSH_START in send_event() too
Without this, flushing might not unblock the streaming thread and cause deadlocks.

https://bugzilla.gnome.org/show_bug.cgi?id=757257
2015-10-29 11:08:26 +02:00
Sebastian Dröge
1493f4a334 pad: Document the order in which pad probes are called
https://bugzilla.gnome.org/show_bug.cgi?id=757197
2015-10-28 13:04:25 +02:00
Sebastian Dröge
2dfa548f36 pad: Append hooks instead of prepending to call them in the order they were added
https://bugzilla.gnome.org/show_bug.cgi?id=757197
2015-10-28 13:02:04 +02:00
Nirbheek Chauhan
5af73b30ed buffer: flesh out docs for gst_buffer_make_writable() a little
There is a similar explanation in gst_caps_make_writable, but the existing
documentation can be misleading since it does not define what 'is already
writable' means.

Also note when this function is meant to be used.
2015-10-27 11:23:25 +00:00
Nirbheek Chauhan
b76f046999 caps: clarify docs for a few functions that they don't update things in-place
It is not necessarily clear from the existing introspection tags and
documentation alone.
2015-10-27 11:23:25 +00:00
Edward Hervey
41e1bea7ef buffer: Add a GST_BUFFER_DTS_OR_PTS macro
API: GST_BUFFER_DTS_OR_PTS

Many scenarios/elements require dealing with streams of buffers that
might have DTS set (i.e. encoded data, potentially reordered)

To simplify getting the increasing "timestamp" of those buffers, create
a macro that will return the DTS if valid, and if not the PTS
2015-10-27 08:33:23 +01:00
Sebastian Dröge
66c0879908 segment: Return -1 if gst_segment_to_stream_time_full() considers the position not inside the segment
Fixes GstPipeline unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=756564
2015-10-26 10:53:35 +02:00
Florin Apostol
07902f6ab4 uri: fix behaviour for merging uris ending in .. without following /
https://bugzilla.gnome.org/show_bug.cgi?id=757065
2015-10-24 20:32:53 +03:00
Thibault Saunier
d593192a39 debug: Dump pad properties values
Currently we only show element properties values, we should also show
pad properties values

https://bugzilla.gnome.org/show_bug.cgi?id=754166
2015-10-24 07:23:05 +02:00
Sebastian Dröge
9402f9786d segment: Remove leftover debug g_print() 2015-10-23 20:04:42 +03:00
Vivia Nikolaidou
6ff8fdfc47 segment: Add _full variants of all stream/running_time from/to segment position functions
See formula clarifications in design docs for calculation details.

https://bugzilla.gnome.org/show_bug.cgi?id=756564
2015-10-23 15:50:38 +03:00
Mathieu Duponchelle
0726c65da2 gstcontrolsource: Add missing (out) annotation 2015-10-22 10:06:17 +02:00
Sebastian Dröge
0f5be03d76 pad: Fix docs/annotation of gst_pad_probe_info_get_buffer_list()
It's not get_bufferlist(). Because of that it was ignored by the docs and
G-I, leading to crashes because of broken ownership transfer.

https://bugzilla.gnome.org/show_bug.cgi?id=756898
2015-10-21 14:49:49 +03:00
Sebastian Dröge
1efb451154 Use new GST_ENABLE_EXTRA_CHECKS #define
https://bugzilla.gnome.org/show_bug.cgi?id=756870
2015-10-21 14:31:56 +03:00
Vivia Nikolaidou
45f0f354ac segment: Correct stream_time calc for negative applied rate
Updated gst_segment_position_from_stream_time and gst_segment_to_stream_time to reflect correct calculations for the case when the applied rate is negative.

Pasting from design docs:

===============================
Stream time is calculated using the buffer times and the preceding SEGMENT
event as follows:

    stream_time = (B.timestamp - S.start) * ABS (S.applied_rate) + S.time

For negative rates, B.timestamp will go backwards from S.stop to S.start,
making the stream time go backwards.
===============================

Therefore, the calculation for applied_rate < 0 should be:

    stream_time = (S.stop - B.timestamp) * ABS (S.applied_rate) + S.time

and the reverse:

    B.timestamp = S.stop - (stream_time - S.time) / ABS (S.applied_rate)

https://bugzilla.gnome.org/show_bug.cgi?id=756810
2015-10-20 10:43:07 +03:00
Stefan Sauer
70d2a676af tracer: rename the envvar to GST_TRACER_PLUGINS
The subsystem reused the GST_TRACE var that is allready in use by the alloc tracer.
Fixes #756760
2015-10-19 21:41:13 +02:00
Ting-Wei Lan
55fae236d0 gstutils: Fix build with clang -Werror=cast-align
https://bugzilla.gnome.org/show_bug.cgi?id=755657
2015-10-19 13:03:53 +01:00
Sebastian Dröge
2955eeb0ed bin: Make sure to free all cached messages when going to NULL
An ASYNC READY->PAUSED might have failed without the bin code noticing during
the state change, in which case we will never get PAUSED->READY and would leak
messages.

https://bugzilla.gnome.org/show_bug.cgi?id=756611
2015-10-19 11:06:54 +03:00
Tim-Philipp Müller
bc5c199bc5 docs: mention xdot utility to view .dot files directly 2015-10-16 15:59:49 +01:00
Tim-Philipp Müller
424477d00e alloctrace: show details of events and messages leaked
So it's clearer what leaked.
2015-10-16 12:00:50 +01:00
Thiago Santos
cecd8bdfdc memory: fix typo in documentation
It should be 1.2 unless this is a flag from the future
2015-10-15 20:15:48 -03:00
Florin Apostol
224da699a9 pad: fix memory leak when sending events to an EOS pad
https://bugzilla.gnome.org/show_bug.cgi?id=756208
2015-10-07 23:07:59 +01:00
Stefan Sauer
77ef6000c6 tracer: move prototype to the right header
Fixes the build when the tracing subsystem is disabled.
2015-10-06 18:52:38 +02:00
Stefan Sauer
ddc5654b60 tracer: mark GstTracerQuarkId as non GEnum
This reverts 72ca02b1de and marks the enum
accordingly.
2015-10-06 18:49:46 +02:00
Stefan Sauer
b971c0979e tracer: fix the build with debug (tracer) disabled
Sync the macro definitions. The dummy defines has argument mismatches.
2015-10-06 14:01:21 +02:00
Stefan Sauer
73e8508bd4 tracer: fix the build with debug (tracer) disabled
Remove commas at the end of the macros.
2015-10-06 11:39:33 +02:00
Thiago Santos
72ca02b1de gst: adding tracer quark id to gst init and deinit
Fixes issues at make check
2015-10-05 19:06:41 -03:00
Marcin Kolny
e8d0b019b3 tracer: add missing hooks
Add following hooks: element-new, element-add-pad, element-remove-pad,
bin-add-pre, bin-add-post, bin-remove-pre, bin-remove-post, pad-link-pre,
pad-link-post, pad-unlink-pre, pad-unlink-post.

https://bugzilla.gnome.org/show_bug.cgi?id=733187
2015-10-05 20:59:39 +02:00
Thiago Santos
567865c81c tracer: add pad query hooks 2015-10-05 20:59:39 +02:00
Mathieu Duponchelle
eb0c8facca tracer: strdup the passed parameters. 2015-10-05 20:59:39 +02:00
Stefan Sauer
660049bb38 tracing: rename the global api to gst_tracing
This makes it more obvious what is the api for tracer elements and what is api
for the global state.
2015-10-05 20:59:39 +02:00
Stefan Sauer
5e2770566f tracers: eliminate var_args
Register tracer hooks as GCallback. Use macros for hook dispatch and cast the
hook functions back to the appropriate type.
2015-10-05 20:59:39 +02:00
Stefan Sauer
4881d1c16c tracer: use GQuark or strings for the hook id
This way one can define new tracing probes without changing the core. We are
using our own quark table, as 1) we only want to initialize them if we're
tracing, 2) we want to share them with the tracers.
2015-10-05 20:59:39 +02:00
Stefan Sauer
1a3e218b89 tracer: simplify hook api
Instead of a single invoke() function and a 'mask', register to individual
hooks. This avoids one level of indirection and allows us to remove the
hook enums. The message enms are now renamed to hook enums.
2015-10-05 20:59:39 +02:00
Stefan Sauer
7b24d76260 tracer: drop the HookId hid from the invoke method
The MessageId is more detailed and anyway needed to interpret the varargs.
2015-10-05 20:59:39 +02:00
Stefan Sauer
2ef32c8840 tracer: remove commented code 2015-10-05 20:59:39 +02:00
Stefan Sauer
d7acb27dee tracer: use GST_PTR_FORMAT to log the structure
This way we only expand the structure when we're logging. This allows us to
meassure the pure tracing seperately from the logging.
Also add some comments on further improvements.
2015-10-05 20:59:39 +02:00
Stefan Sauer
b92ea7a0bc quarks: revert the quark changes, we not using them anymore 2015-10-05 20:59:39 +02:00
Stefan Sauer
46ea9729df tracer: split into tracer and tracerutils
Keep tracer base class in tracer and move core support into the utils module.
Add a unstable-api guard to the tracer.h so that external modules would need to
acknowledge the status by setting GST_USE_UNSTABLE_API.
2015-10-05 20:59:39 +02:00
Stefan Sauer
6ea2b41364 docs: add gtk-doc blobs 2015-10-05 20:59:39 +02:00
Stefan Sauer
7dfc0a8ead tracers: add a logging helper to remove identical copies from the tracers 2015-10-05 20:59:39 +02:00
Stefan Sauer
2a01088079 tracer: use the same timebase as the logging 2015-10-05 20:59:39 +02:00
Stefan Sauer
81b27c7036 tracer: parse parameters 2015-10-05 20:59:39 +02:00
Stefan Sauer
ce7ce2d866 tracer: add more hooks and handle it in the plugins 2015-10-05 20:59:39 +02:00
Stefan Sauer
11d6e13d73 tracer: use a macros for the enabled check
Avoid a function call and check the variables from the macro.
2015-10-05 20:59:39 +02:00
Stefan Sauer
e08fab7d5f tracer: use macros for hooks
Wrap the hook with a pre and post macro. This looks less intrusive than the
previous version, although it is a little less optimized.
2015-10-05 20:59:39 +02:00
Stefan Sauer
9d3975b5da tracer: pass the timestamp directly
Avoid the structure mashalling (and weird field naming).
2015-10-05 20:59:39 +02:00
Stefan Sauer
c2d5b35332 tracer: pass the instance to the vmethod 2015-10-05 20:59:39 +02:00
Stefan Sauer
764b5833b9 tracer: switch to quarks and add another hook for buffer flow
Use pre-defines quarks as this will be called quite often.
2015-10-05 20:59:39 +02:00
Stefan Sauer
68b1473846 tracer: add the hook-id to the invoke signature
Tracers that subscribe to multiple hooks can know what hook was used.
2015-10-05 20:59:39 +02:00
Stefan Sauer
4e5d586c7d tracer: initial prototype for the tracing subsystem 2015-10-05 20:59:39 +02:00
Sebastian Dröge
3e8ef4cf5a Update GLib dependency to 2.40.0 2015-10-02 22:18:24 +03:00
Matthew Waters
d5ded15889 bin: implement context propagation when adding elements
When adding an element to a bin we need to propagate the GstContext's
to/from the element.

This moves the GstContext list from GstBin to GstElement and adds
convenience functions to get the currently set list of GstContext's.

This does not deal with the collection of GstContext's propagated
using GST_CONTEXT_QUERY.  Element subclasses are advised to call
gst_element_set_context if they need to propagate GstContext's
received from the context query.

https://bugzilla.gnome.org/show_bug.cgi?id=705579
2015-09-28 18:21:59 +10:00
Thiago Santos
4b5e79cd18 pad: don't fallback to caps queries with proxy pads
A proxy-pad should always proxy the caps related queries
and events to its down or upstream peers on the other side
of the element. Falling back to a caps query seems wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=754112
2015-09-26 07:13:45 -03:00
Vivia Nikolaidou
44ba1565d9 segment: Replaced gst_segment_to_position with gst_segment_position_from_running_time
gst_segment_to_position might cause confusion, especially with the addition of
gst_segment_position_from_stream_time . Deprecated gst_segment_to_position
now, and replaced it with gst_segment_position_from_running_time.

Also added unit tests.
2015-09-26 00:00:08 +02:00
Vivia Nikolaidou
26ef44f17c segment: gst_segment_to_stream_time: Renamed 'result' to 'stream_time'
Renamed the "result" variable to "stream_time" for better readability.
2015-09-25 23:59:59 +02:00
Vivia Nikolaidou
c0d4b1b646 segment: Added gst_segment_position_from_stream_time()
gst_segment_position_from_stream_time() will convert stream time into a
position in the segment so that gst_segment_to_stream_time() with that
position returns the same stream time. It will return -1 if the stream time
given is not inside the segment.
2015-09-25 23:59:53 +02:00
Vivia Nikolaidou
60130eb5f0 segment: Rewording of struct field descriptions
The new wording makes it easier to understand exactly what each field of the
GstSegment struct represents.
2015-09-25 23:58:41 +02:00
Sebastian Dröge
a3513d6e97 event: Make sure that timestamp + diff in QoS events is never smaller than 0
When a running-time-offset is stored in the event, it could become smaller
than 0 although the event is otherwise correct. This can happen when pad
offsets are used.

To prevent this, we set the timestamp to -diff, so that in the end the sum of
both is exactly 0.

https://bugzilla.gnome.org/show_bug.cgi?id=754356
2015-09-25 23:55:18 +02:00
Stian Selnes
0fbf1d3eb7 bin: element: Ignore activate result for removed pads on state change
This fixes a race where a state change may return failure if it has
request pads that are deactivated and removed (and thus have no
parent) at the same time as the element changes state and (de)activates
its pads.

https://bugzilla.gnome.org/show_bug.cgi?id=755342
2015-09-24 12:14:57 +02:00
Vikram Fugro
c12bd5d807 gst: Documentation typo fix in caps & pad APIs
gst_caps_can_intersect() & GST_PAD_IS_ACCEPT_INTERSECT()
documentation typo fix.

https://bugzilla.gnome.org/show_bug.cgi?id=755257
2015-09-19 17:57:55 +02:00
Tim-Philipp Müller
366680ee59 bufferpool: sprinkle some allow-none and out annotations for g-i 2015-09-15 18:05:43 +01:00
Vineeth TM
09900bbfb1 bin: fix typo in log message when threadpool alloc fails
https://bugzilla.gnome.org/show_bug.cgi?id=754975
2015-09-14 16:03:51 +01:00
Igor Rondarev
6972e7a926 configure: Check for socketpair() in -lsocket too
On e.g. QNX it is in an external library, not libc.

https://bugzilla.gnome.org/show_bug.cgi?id=754875
2015-09-11 23:23:50 +02:00
Vivia Nikolaidou
ee1bbe2f15 bin: Make sure we don't add/remove a bin to/from itself
Doing so would deadlock from trying to acquire the object lock twice

https://bugzilla.gnome.org/show_bug.cgi?id=754036
2015-08-25 10:19:44 +03:00
Stefan Sauer
f3e122ffec debugutils: bring the dot style a bit closer to what we use in the docs
Use round corners for bins and elements. Put sink pads on the left and src pads
on the right of elements.
2015-08-17 22:08:07 +02:00
Sebastian Dröge
1176fbf6dc pad: Break sticky event array iterations if the type is bigger than the one we look for
Microoptimization we can do because the array is sorted by type.
2015-08-15 17:59:21 +02:00
Edward Hervey
7f0e0ff3ca gstpad: Add a new GST_PROBE_HANDLED return value for probes
In some cases, probes might want to handle the buffer/event/query
themselves and stop the data from travelling further downstream.

While this was somewhat possible with buffer/events and using
GST_PROBE_DROP, it was not applicable to queries, and would result
in the query failing.

With this new GST_PROBE_HANDLED value, the buffer/event/query will
be considered as successfully handled, will not be pushed further
and the appropriate return value (TRUE or GST_FLOW_OK) will be returned

This also allows probes to return a non-default GstFlowReturn when dealing
with buffer push. This can be done by setting the
GST_PAD_PROBE_INFO_FLOW_RETURN() field accordingly

https://bugzilla.gnome.org/show_bug.cgi?id=748643
2015-08-15 17:00:12 +02:00
Mathieu Duponchelle
afff60b0b5 gstversion: Add missing include in .in file. 2015-08-15 13:26:12 +02:00
Mathieu Duponchelle
24e1abe367 Headers: add missing includes. 2015-08-15 13:17:07 +02:00
Thiago Santos
b76ecfd992 pad: add GST_PAD_FLAG_ACCEPT_TEMPLATE
It will make the default accept-caps handler use the pad template
caps instead of the query-caps result to check if the caps is
acceptable. This is aligned with what the design docs says the
accept-caps should do (be non-recursive) and should be faster. It
is *not* enabled by default, though.

API: GST_PAD_FLAG_ACCEPT_TEMPLATE
API: GST_PAD_IS_ACCEPT_TEMPLATE
API: GST_PAD_SET_ACCEPT_TEMPLATE
API: GST_PAD_UNSET_ACCEPT_TEMPLATE

https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 08:56:53 -03:00
Vivia Nikolaidou
88f6334af6 datetime: accept just a time as ISO 8601 string and use today's date then
If no date and only a time is given in gst_date_time_new_from_iso8601_string(),
assume that it is "today" and try to parse the time-only string. "Today" is
assumed to be in the timezone provided by the user (if any), otherwise Z -
just like the behavior of the existing code.

https://bugzilla.gnome.org/show_bug.cgi?id=753455
2015-08-11 09:50:50 +01:00
Wim Taymans
ffa90b2e72 devicemonitor: fix provider leak 2015-08-08 17:59:51 +02:00
Edward Hervey
2ef06fd39d pad: Fix previous commit
We want to get the caps query *result*
2015-08-08 15:29:30 +02:00
Wim Taymans
5a7b7e66bd deviceprovider: Add method to hide devices from a provider
Add methods to add/remove the providers that should be hidden by this
provider. Also make a method to get a list of hidden providers.

This makes it possible to have multiple systems monitor the same devices
and remove duplicates.

Add a property to see all devices, even duplicate ones from hidden
providers.
2015-08-08 15:21:50 +02:00
Edward Hervey
2499349d94 pad: get_allowed_caps() should go through both pads
The previous implementation was doing a direct call to the peer pad,
which resulted in query probes never being called on the original pad.

Instead of that, get the peer pad caps by using gst_pad_peer_query()
which will call probes in the expected fashion.
2015-08-08 14:51:59 +02:00
Vineeth TM
0eb9dde1e8 value: free caps during failure
While calling gst_value_deserialize_sample, if there is a failure
after caps is ref'ed, then caps is getting leaked. Hence checking for
caps in fail: goto condition and unref'ing it

https://bugzilla.gnome.org/show_bug.cgi?id=753338
2015-08-07 10:17:02 +02:00
Thibault Saunier
749810b238 registry: Add plugins to the registry we are loading and not default one
When running gst_registry_scan_plugin_file we were losing the
information about the registry being loaded and ended up adding the
plugin to the default registry which was not correct.

https://bugzilla.gnome.org/show_bug.cgi?id=752662
2015-08-05 17:32:00 -04:00
Wim Taymans
62f6207e04 devicemonitor: get a list of currently monitored providers
Get a list of the currently monitored providers.
2015-08-04 13:24:10 +02:00
George Kiagiadakis
794a08d7e9 pad: fix invalid unref after IDLE probe on non-OK flow return
In case there is an IDLE probe fired from gst_pad_push_data and it
doesn't return GST_FLOW_OK, the code jumps to the probe_stopped
label which tries to unref the data object. However, at this point
the data object belongs downstream and must not be touched.
By setting data = NULL, the code skips this unref.

https://bugzilla.gnome.org//show_bug.cgi?id=753151
2015-08-04 11:10:45 +01:00
Jan Schmidt
cde3524f52 buffer: Fix the name of the parentbuffermeta debug category.
Don't use 'glbufferrefmeta' as the debug category for the
parent buffer meta.
2015-08-04 20:09:47 +10:00
Jan Schmidt
fa370153bc buffer: Remove extra debug symbol from exports
Don't export the debug variable for the parent_buffer_meta.

This was accidentally exported and shouldn't be public
2015-08-04 20:02:00 +10:00
Tim-Philipp Müller
62bd514c8e docs: info: remove 0.8 terminology from log level description
We don't "iterate" bins or pipelines any more.
2015-07-30 17:29:25 +01:00
Nicolas Dufresne
48ab4f6fe2 doc/seekflags: Fix cross references
This fixes miss-use of @ instead of % to refer to enumeration
values.
2015-07-28 21:14:40 -04:00
Tim-Philipp Müller
0a50d1be52 docs: fix description of gst_buffer_extract_dup()
No GBytes involved.
2015-07-22 15:38:06 +01:00
Wim Taymans
eedd9cb7b7 devicemonitor: do start and stop outside of the lock
Release the monitor lock when calling the provider start/stop methods.
Because we release the lock now, We need to make sure we check the
cookie again and keep track of started and removed providers.
2015-07-16 18:54:50 +02:00
Wim Taymans
b4dbb9d742 deviceprovider: small cleanups
Protect against wrong arguments.
Clean up the header file indentation.
2015-07-16 18:54:50 +02:00
Wim Taymans
8caf9b7a87 devicemonitor: keep order of providers and devices
The deviceproviders are added to the array sorted by their rank. Make
sure we keep this ordering when removing a provider.

We use _prepend to collect the devices, use g_list_reverse to get the
devices in the right order; sorted by rank and in the same order as
returned by the provider.
2015-07-16 18:54:50 +02:00
Tim-Philipp Müller
162fc1f7d6 docs: drop reference to sourceforge mailing list adress 2015-07-16 17:13:35 +01:00
Wim Taymans
661a1947b1 device: add generic struct with properties
Add a generic structure to hold any additional properties about the
device.
2015-07-15 18:21:13 +02:00
Tim-Philipp Müller
3b6fa8e81a docs: bus: mention main loop requirement in gst_bus_add_watch() docs 2015-07-13 14:25:42 +01:00
Prashant Gotarne
3cea60dc6f task: add function guard for _set_lock() and fix guard for _join()
Should only access the object structure after checking
it's valid in gst_task_join().

https://bugzilla.gnome.org/show_bug.cgi?id=746385
https://bugzilla.gnome.org/show_bug.cgi?id=746431
2015-07-13 14:16:52 +01:00
Philippe Normand
ee40730558 protection: implement meta transform function
Copy the GstMeta contents over to the new buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=749590
2015-07-11 00:19:20 +01:00
Hyunjun Ko
eaf4153668 meta: transform_func: return FALSE if not supported or failed
https://bugzilla.gnome.org/show_bug.cgi?id=751778
2015-07-07 13:40:17 +03:00
Arun Raghavan
f0da038c34 pad: Clarify pad probe return type documentation 2015-07-06 14:35:51 +05:30
Olivier Crête
f126094dce pad: Enforce NEED_PARENT flag also for chain
The check for the presence of the parent in the presence of
the NEED_PARENT flag was missing for the chain function. Also keep
a ref on the parent in case the pad is removed mid-chain.
2015-07-03 12:56:01 -04:00
Stian Selnes
1a67066ddc memory: Add missing field initializers to GstMapInfo
https://bugzilla.gnome.org/show_bug.cgi?id=751881
2015-07-03 11:36:13 +02:00
Sebastian Dröge
0aae36567d buffer: Don't copy "memory" metas unconditionally
Don't copy memory metas if we only copied part of the buffer, didn't
copy memories or merged memories. In all these cases the memory
structure has changed and the memory meta becomes meaningless.

https://bugzilla.gnome.org/show_bug.cgi?id=751712
2015-07-01 10:37:37 +02:00
Sebastian Dröge
d43f256a9e Revert "buffer: Don't copy POOLED and memory metadata unconditionally"
This reverts commit 7a08fa5ec4.
2015-07-01 10:37:35 +02:00
Sebastian Dröge
7a08fa5ec4 buffer: Don't copy POOLED and memory metadata unconditionally
https://bugzilla.gnome.org/show_bug.cgi?id=751712
2015-06-30 18:40:28 +02:00
Prashant Gotarne
03dccde1ef task: guard against NULL task function
https://bugzilla.gnome.org/show_bug.cgi?id=746439
2015-06-25 09:56:19 +01:00
Jonas Holmberg
fb19ebbd8f bufferpool: Fixed compiler warning
The pool variable was unused when buidling with debug disabled.
2015-06-24 16:05:37 +02:00
Sebastian Dröge
d78b9a5ada bufferlist: Warn if copying a buffer fails in gst_buffer_list_copy_deep() 2015-06-24 10:52:56 +02:00
Hyunjun Ko
7ecef53dbb bufferlist: add new api gst_buffer_list_copy_deep
https://bugzilla.gnome.org/show_bug.cgi?id=751420
2015-06-24 10:52:56 +02:00
Song Bing
5109173abf pad: Clear EOS flag after received STREAM_START event
Clear EOS flag after received STREAM_START event

https://bugzilla.gnome.org/show_bug.cgi?id=750761
2015-06-23 10:35:46 +02:00
Thiago Santos
1418e9e85c utils: use caps when getting a compatible pad by template
Do not ignore the caps argument when requesting a pad by template.

This is particularly harmful when the pad caps query by default
returns ANY so it will match the first template instead of the
one that actually intersects with the caps.

https://bugzilla.gnome.org/show_bug.cgi?id=751235
2015-06-22 17:18:43 -03:00
Jan Schmidt
cba677bebb gstsample.h: Include gstbufferlist.h now that it uses GstBufferList 2015-06-23 00:14:30 +10:00
Hyunjun
e8db96b033 sample: add gst_sample_set/get_buffer_list apis
Allowed to set/get buffer list to sample if needed

https://bugzilla.gnome.org/show_bug.cgi?id=751026
2015-06-22 13:17:01 +02:00
Nicolas Dufresne
ddedc412f5 doc: Unify Since mark for attribute and enum
As this show up as prose in the doc, simply make it consistent
and "arguable" nicer to read.
2015-06-18 11:51:48 -04:00
Nicolas Dufresne
210c29665a doc: Remove parenthesis around Since:
This confuse the parser, hence it does not endup in the doc and the
index properly.
2015-06-18 11:48:50 -04:00
Jan Schmidt
4d4e436376 Add GstParentBufferMeta
A core meta which helps implement the old concept
of sub-buffering in some situations, by making it
possible for a buffer to keep a ref on a different
parent buffer. The parent buffer is unreffed when
the Meta is freed.

This meta is used to ensure that a buffer whose
memory is being shared to a child buffer isn't freed
and returned to a buffer pool until the memory
is.

https://bugzilla.gnome.org/show_bug.cgi?id=750039
2015-06-19 01:15:25 +10:00
Nicolas Dufresne
632431aecb gi: Use INTROSPECTION_INIT for --add-init-section
This new define was added to common. The new init section fixed
compilation warning found in the init line that was spread across
all files.
2015-06-16 18:08:24 -04:00
Nicolas Dufresne
5bdd92be75 clock: Fix _STIME_FORMAT macros
This macro didn't work well as it relied on the sign on the last
divided number (number of days). This value is most of the time
zero, and zero is considered positive in printf. Instead, deal with
the sign manually, and resuse the original macros for the rest. This
actually simplify the macro a lot.
2015-06-15 10:06:00 -04:00
Nicolas Dufresne
48700c7791 doc: More doc warning fixes
So from this point, the remaining warning for libgstreamer are about
protected member not showing in the doc. This may need some discussion
with upstream gtk-doc people.

* Remove % in from of none macro
* Fixed GST_TYPE_FAGS -> GST_TYPE_FAG_SET
* Minor wording fix
* Can't link to GstUri.port, so split the .port part
2015-06-14 10:29:04 -04:00
Nicolas Dufresne
6eb58a67a9 doc: In GstUri we meant nul-terminated, not %NULL
%NULL refers to the pointer. I've written it this way in one
word as this is what GLib uses.
2015-06-14 09:17:21 -04:00
Nicolas Dufresne
781865e0da doc: Cannot reference GST_PACKAGE_RELEASE_DATETIME
So simply remove the % sign.
2015-06-13 21:02:20 -04:00
Nicolas Dufresne
b059520926 doc: Fix typo in ref _clock_wait_for_sync() 2015-06-13 20:52:01 -04:00
Nicolas Dufresne
6f2fb1e37e doc: Fix GstUri doc typos
* Use &perctn; instead of reserved character %
* NULL take two L
2015-06-13 20:37:34 -04:00
Nicolas Dufresne
bd9ea8d18f doc: Fix Since: marks
There was few Since: mark missing their column. Also unify the way
we set the Since mark on enum value and structure members. These
sadly don't show up in the index.
2015-06-13 20:19:59 -04:00
Nicolas Dufresne
b3f42b0c35 doc: Add gst_buffer_copy_deep() 2015-06-13 20:02:18 -04:00
Nicolas Dufresne
2ec88e0939 doc: Remove uneeded protectionevent section
These functions are part of gstevent section already. Keep the doc,
since it's good.
2015-06-13 13:14:30 -04:00
Nicolas Dufresne
7fdb15d6a2 taglist: Add missing scope to func param
This tell GI if this function is for actions (call) or is the
answer of this method being asynchronous (async). In this case
it's a call. This also silence warning from the GI scanner.
2015-06-13 12:32:49 -04:00
Nicolas Dufresne
92087ba75a gstprotection: Add missing Since 1.6 mark 2015-06-13 12:27:31 -04:00
Nicolas Dufresne
bdfcf43f74 gstprection: _add_protection_meta() is transfer none
Just like gst_buffer_add_meta() this function should also be
transfer none. This also silence a gi warning about returning
a copy of a non boxed bare structure.
2015-06-13 12:26:13 -04:00
Nicolas Dufresne
a65cea7c69 gstprotection: Add missing namespace to macro
GST_PROTECTION_SYSTEM_ID_CAPS_FIELD was missing the GST_ namespace.
Add it before its too late.
2015-06-13 12:25:19 -04:00
Nicolas Dufresne
0e8a318dd7 doc: Keep SECTION: after the ifdef
Otherwise GTK doc will see it as often as we include that files
and warn about duplicated SECTION:
2015-06-13 11:55:10 -04:00
Nicolas Dufresne
9fa4c67632 gi: Skip mini object method that play with refcounting
It make no sense to allow using that. Any use would lead to leak
of crash. Note that GMiniObject is entirely unusable as you cannot
cast from let's say GstBuffer to GstMiniObject.
2015-06-13 10:25:48 -04:00
Nicolas Dufresne
54f6540f16 doc: Fix annoation for GstMiniObject
Replacing reprecated "Ref Func:", "Unref Fun:" etc. comment block
with appropriate (ref-func name) etc. annotation.
2015-06-13 09:37:46 -04:00
Nicolas Dufresne
b09a7bb5af doc: Fix unbalanced parenthesis 2015-06-13 09:34:06 -04:00
Nicolas Dufresne
17006c4ee8 doc: Fix more typo 2015-06-13 09:30:24 -04:00
Nicolas Dufresne
ea03cd4190 doc: Fix type in previous commit
Marker is (value .. not (alue.
2015-06-13 09:22:41 -04:00
Nicolas Dufresne
18536930ff doc: Don't use deprecated Value: and Type: comment
Instead use appropriate annotation. Annotations can be added
to the right of the constant name in a comment block.
2015-06-13 09:19:27 -04:00
Nicolas Dufresne
5cab2e14c4 clock: Add signed time utilities
Add utility to print signed value of time. This is useful to
trace running time values in gint64 or GstClockTimeDiff values.
Additionally, define GST_CLOCK_STIME_NONE to indicate an invalid
signed time value and validation macro. New macros are:

GST_CLOCK_STIME_NONE
GST_CLOCK_STIME_IS_VALID
GST_STIME_FORMAT
GST_STIME_ARGS

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:20:16 -04:00
Thiago Santos
4b4a8295ae message: add allow-none to gst_message_new_ function
No restriction for creating messages without a source
2015-06-12 09:54:37 -03:00
Matthew Waters
d61ba38118 memory: provide a mem_map_full that takes the GstMapInfo
Follow up of 7130230ddb

Provide the memory implementation the GstMapInfo that will be used to
map/unmap the memory.  This allows the memory implementation to use
some scratch space in GstMapInfo to e.g. track different map/unmap
behaviour or store extra implementation defined data about the map
in use.

https://bugzilla.gnome.org/show_bug.cgi?id=750319
2015-06-12 16:12:10 +10:00
Sebastian Dröge
abfcffde46 pipeline: Add gst_pipeline_set_latency(), getter and GObject property
This overrides the default latency handling and configures the specified
latency instead of the minimum latency that was returned from the LATENCY
query.

https://bugzilla.gnome.org/show_bug.cgi?id=750782
2015-06-11 12:55:34 +02:00
Jan Schmidt
ade4a83e63 Add GST_BUFFER_FLAG_SYNC_AFTER flag, and implement in filesink.
Makes it possible to get filesink to fsync() after rendering
a buffer.
2015-06-08 19:13:18 +10:00
Sebastian Dröge
fe3249b0e1 clock: Add GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC and related API
gst_clock_wait_for_sync(), gst_clock_is_synced() and gst_clock_set_synced()
plus a signal to asynchronously wait for the clock to be synced.

This can be used by clocks to signal that they need initial synchronization
before they can report any time, and that this synchronization can also get
completely lost at some point. Network clocks, like the GStreamer
netclientclock, NTP or PTP clocks are examples for clocks where this is useful
to have as they can't report any time at all before they're synced.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:53:27 +02:00
Matthew Waters
7130230ddb memory: provide a mem_unmap function that takes the flags to unmap
There are gstmemory's available that operate in two memory domains
and need to ensure consistent access between these domains.

Imagine a scenario where e.g. the GLMemory is mapped twice in both
the GPU and the CPU domain.  On unmap or a subsequent map, it would
like to ensure that the most recent data is available in the memory
domain requested.  Either by flushing the writes and/or initiating a
DMA transfer.  Without knowing which domain is being unmapped, the
memory does not know where the most recent data is to transfer to
the other memory domain.

Note: this still does not allow downgrading a memory map.

https://bugzilla.gnome.org/show_bug.cgi?id=750319
2015-06-03 20:41:59 +10:00
Matthew Waters
e9c15d5321 memory: gst_memory_share may fail to exclusively lock the parent memory
Now that locking exclusively dows not always succeed, we need to signal
the failure case from gst_memory_init.

Rather than introducing an API or funcionality change to gst_memory_init,
workaround by checking exclusivity in the calling code.

https://bugzilla.gnome.org/show_bug.cgi?id=750172
2015-06-03 20:41:44 +10:00
Matthew Waters
eb71ee4040 buffer: locking memory exclusively may fail
Attempt to return a copy of the memory instead.

https://bugzilla.gnome.org/show_bug.cgi?id=750172
2015-06-03 20:41:44 +10:00
Matthew Waters
ad4569c893 miniobject: disallow a double write/exclusive lock
gst_memory_lock (mem, WRITE | EXCLUSIVE);
gst_memory_lock (mem, WRITE | EXCLUSIVE);

Succeeds when the part-miniobject.txt design doc suggests that this should fail:

  "A gst_mini_object_lock() can fail when a WRITE lock is requested and
  the exclusive counter is > 1. Indeed a GstMiniObject object with an
  exclusive counter 1 is locked EXCLUSIVELY by at least 2 objects and is
  therefore not writable."

https://bugzilla.gnome.org/show_bug.cgi?id=750172
2015-06-03 20:41:44 +10:00
Tim-Philipp Müller
935ecd85ea uri: match return type of get_uri_type() implementation to declaration
https://bugzilla.gnome.org/show_bug.cgi?id=750292
2015-06-02 20:32:35 +01:00
Jan Schmidt
b0c072711d gstbuffer: Add a note about metas needing to be copied last 2015-06-03 00:48:17 +10:00
Jan Schmidt
58e5cd2695 gstvalue: Implement gst_value_is_subset() for flagsets 2015-06-03 00:48:17 +10:00
Reynaldo H. Verdejo Pinochet
01b9874687 structure: add note about missing field creation on _set() 2015-05-31 20:22:34 -03:00
Nirbheek Chauhan
b174ec6903 gst/gst.c: Add a warning about DllMain to prevent misuse
DllMain should not be relied on for anything except storing the DLL handle.
It should also not be defined for static builds, but doing so is not
straightforward and is mostly harmless, so let's just add a comment about that
for now.
2015-05-27 13:21:03 +01:00
Jan Schmidt
f9e5178dd1 gstvalue: Add GstFlagSet type
GstFlagSet is a new type designed for negotiating sets
of boolean capabilities flags, consisting of a 32-bit
flags bitfield and 32-bit mask field. The mask field
indicates which of the flags bits an element needs to have
as specific values, and which it doesn't care about.

This allows efficient negotiation of arrays of boolean
capabilities.

The standard serialisation format is FLAGS:MASK, with
flags and mask fields expressed in hexadecimal, however
GstFlagSet has a gst_register_flagset() function, which
associates a new GstFlagSet derived type with an existing
GFlags gtype. When serializing a GstFlagSet with an
associated set of GFlags, it also serializes a human-readable
form of the flags for easier debugging.

It is possible to parse a GFlags style serialisation of a
flagset, without the hex portion on the front. ie,
+flag1/flag2/flag3+flag4, to indicate that
flag1 & flag4 must be set, and flag2/flag3 must be unset,
and any other flags are don't-care.

https://bugzilla.gnome.org/show_bug.cgi?id=746373
2015-05-25 16:23:33 +10:00
Thibault Saunier
99d3179634 gstvalue: Add a comparision function for GstStructures 2015-05-20 20:21:24 +02:00
Vincent Penquerc'h
d0c3e33bbe pad: bump chain function call logs from LOG to DEBUG
They're really useful compared to other LOG stuff in there, so
there is value is including them and not the rest.
2015-05-15 14:57:14 +01:00
Stefan Sauer
b8c6ebd0f2 gstobject: add gst_object_has_as_ancestor and deprecate previous function
The old gst_object_has_ancestor will call the new code. This establishes the
symetry with the new gst_object_has_as_parent.

API: gst_object_has_as_ancestor()
2015-05-15 13:55:19 +02:00
Stefan Sauer
3492105a06 gstobject: rename gst_object_has_parent to gst_object_has_as_parent
This avoid confusion with a potential punction that check if a gstobject has-a
parent.

API: gst_object_has_as_parent()
2015-05-15 13:45:18 +02:00
Tim-Philipp Müller
1a9a3c7ef9 docs: gst-launch -> gst-launch-1.0 in example pipelines
And some small example pipeline fix-ups.
2015-05-10 11:35:50 +01:00
Jimmy Ohn
937ad1615a event: remove duplicated include
https://bugzilla.gnome.org/show_bug.cgi?id=748739
2015-05-01 10:39:19 +01:00
Sebastian Dröge
18b0581009 taglist: Copy the tag scope too when copying tag lists 2015-04-28 15:51:23 +02:00
Tim-Philipp Müller
8e6561be91 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:49:44 +01:00
Tim-Philipp Müller
6c394643be printf: fix invalid memory access in case of %%
https://bugzilla.gnome.org/show_bug.cgi?id=748414
2015-04-24 15:16:24 +01:00
Jason Litzinger
1b881ecc26 gstinfo: fix infinite loop in gst_debug_unset_threshold_for_name()
Ensure iterator is advanced. The current list iteration code only
advances the iterator (walk) if a match is found, which results
in an infinite loop when more than one entry exists in the list.

https://bugzilla.gnome.org/show_bug.cgi?id=748321
2015-04-23 11:20:25 +01:00
Sebastian Dröge
a5ab02733a buffer: Check return value of meta transform function in gst_buffer_copy_into()
... by printing some debug output whenever copying a GstMeta fails.

https://bugzilla.gnome.org/show_bug.cgi?id=748119
2015-04-20 09:23:43 +02:00
Tim-Philipp Müller
243889a88c event: fix header formatting 2015-04-18 12:31:02 +01:00
Tim-Philipp Müller
640e3ecfee gst.h: include the new gstprotection.h header
https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-04-18 12:27:46 +01:00
Alex Ashley
abdafb0d64 protection: add GstProtectionMeta to support protected content
In order to support some types of protected streams (such as those
protected using DASH Common Encryption) some per-buffer information
needs to be passed between elements.

This commit adds a GstMeta type called GstProtectionMeta that allows
protection specific information to be added to a GstBuffer. An example
of its usage is qtdemux providing information to each output sample
that enables a downstream element to decrypt it.

This commit adds a utility function to select a supported protection
system from the installed Decryption elements found in the registry.
The gst_protection_select_system function that takes an array of
identifiers and searches the registry for a element of klass Decryptor that
supports one or more of the supplied identifiers. If multiple elements
are found, the one with the highest rank is selected.

This commit adds a unit test for the gst_protection_select_system
function that adds a fake Decryptor element to the registry and then
checks that it can correctly be selected by the utility function.

This commit adds a unit test for GstProtectionMeta that creates
GstProtectionMeta and adds & removes it from a buffer and performs some
simple reference count checks.

API: gst_buffer_add_protection_meta()
API: gst_buffer_get_protection_meta()
API: gst_protection_select_system()
API: gst_protection_meta_api_get_type()
API: gst_protection_meta_get_info()

https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-04-18 12:24:06 +01:00
Alex Ashley
0f36b16a29 event: add new GST_EVENT_PROTECTION
In order for a decrypter element to decrypt media protected using a
specific protection system, it first needs all the protection system
specific  information necessary (E.g. information on how to acquire
the decryption keys) for that stream.

The GST_EVENT_PROTECTION defined in this commit enables this information
to be passed from elements that extract it (e.g. qtdemux, dashdemux) to
elements that use it (E.g. a decrypter element).

API: GST_EVENT_PROTECTION
API: gst_event_new_protection()
API: gst_event_parse_protection()

https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-04-18 12:04:29 +01:00
Thiago Santos
3d8de8a4f9 pad: block data flow when idle probe is running
When idle probe runs directly from the gst_pad_add_probe() function
we need to make sure that no data flow happens as idle probe
is a blocking probe. The idle probe will prevent that any
buffer, bufferlist or serialized events and queries are not
flowing while it is running.

https://bugzilla.gnome.org/show_bug.cgi?id=747852
2015-04-16 10:09:29 -03:00
Tim-Philipp Müller
ac8a8f90b3 docs: clarify that return value of gst_filename_to_uri() must be freed
https://bugzilla.gnome.org/show_bug.cgi?id=747104
2015-04-16 13:42:18 +01:00
Vincent Penquerc'h
a3b42ec42a bin: undo upward state changes on children when a child fails
When a bin changes states upwards, and a child fails to change,
any child that was already switched will not be reset to its
original state, leaving its state inconsistent with the bin,
which does not change state due to the failure.

If the state change was from NULL to READY, it means that deleting
this bin will cause those children to be deleted while not in
NULL state, which is a Bad Thing. For other upward changes, it
is less of a problem, as a subsequent switch back to NULL will
cause an actual downwards change on those inconsistent elements,
albeit from the "wrong" state.

We now reset state to the original one when a child fails.

Includes unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=747610
2015-04-15 16:00:21 +01:00
Tim-Philipp Müller
d3400ce358 elementfactory: add ENCRYPTOR class defines
to go with DECRYPTOR.
2015-04-14 17:51:05 +01:00