- Mar 18, 2020
-
-
Miguel París Díaz authored
In case the buffer is not writable, the parent (the BufferList) is not removed before calling func. So if it is changed, the parent (the BufferList) of the previous buffer should be removed after calling func.
-
-
For all the structure creation using valist/varargs we calculate the number of fields we will need to store. This ensures all callers will end up with a single allocation.
-
Instead of having 3 allocations: * One for GstStructure * One for GArray * One for the array *within* GArray We try to limit this to a single allocation, inlining everything. This reduces the number of micro-allocations and improves locality of data access.
-
- Mar 14, 2020
-
-
Having a NULL caps in a GValue is legal and we should handle it properly for comparisons.
-
- Mar 13, 2020
-
-
Stéphane Cerveau authored
-
- Mar 12, 2020
-
-
Before that commit `{test, }` wouldn't be accepted as an array because of the trailing coma, the commit fixes that. At the same time, the code has been refactored to avoid special casing the first element of the list, making `{,}` or `<,>` valid lists.
-
Guillaume Desmottes authored
Looks like it's been removed from glib.devhelp2 on Fedora 31. Fix #508
-
- Mar 11, 2020
-
-
Matthew Waters authored
This allows an element to not require implementing transform or transform_ip.
-
- Mar 09, 2020
-
-
Sebastian Dröge authored
There can only be a single waiter: on the streaming thread.
-
Sebastian Dröge authored
There can only be a single waiter: on the streaming thread.
-
Sebastian Dröge authored
... and immediately return FLUSHING from the streaming thread instead of waiting potentially forever. Fixes gstreamer/gstreamer#516
-
Sebastian Dröge authored
We kept the start time around and subtracted it everywhere for "easy of debugging", but we don't do anything like this anywhere else and it only complicates the code unnecessarily.
-
Sebastian Dröge authored
-
fixate() will return empty caps if it gets empty caps passed and assert early if any caps are provided as there's no meaningful way of fixating any caps. truncate() and simplify() will return the input caps in case of any/empty caps as before, but slightly optimized and as documented behaviour. Also add tests for this and a few other operations behaviour on empty/any caps.
-
- Mar 05, 2020
-
-
This is not an API breakage, as implementors are already expected to return a GstFlowReturn
-
- Mar 03, 2020
-
-
Seungha Yang authored
Required to avoid broken log string on Windows but missed in the commit of 493a3261
-
- Mar 02, 2020
-
-
The format modifier for thread-id prints hex value without "0x" prefix on Windows.
-
- Feb 28, 2020
-
-
Tim-Philipp Müller authored
.. instead of looking things up by thread id from a GHashTable, which also happens to have no locking around insertion/lookup.
-
Tim-Philipp Müller authored
-
gst-inspect-1.0 segfaults on tracing logs where it fails to find element stats. So on the pipelines where we get the following WARNING during execution will afterwards crash with a segfault as the g_ptr_array has a index for it but it is just a NULL pointer. WARN default gst-stats.c:444:do_message_stats: no element stats found for ix=X An example of an pipeline which can reproducibly create a trace log where this occurs would be this GST_DEBUG="GST_TRACER:7" GST_TRACERS="stats;rusage;latency" gst-launch-1.0 videotestsrc num-buffers=120 ! autovideosink &> trace.log gst-stats-1.0 trace.log
-
- Feb 27, 2020
-
-
Add the equation to the debug message to make it easier for non-GStreamer experts to understand why their pipeline has latency.
-
- Feb 26, 2020
-
-
That's the minimum version of GLib we require right now. Fixes gstreamer/gstreamer#514
-
The clocksync element is a generic element that can be placed in a pipeline to synchronise passing buffers to the clock at that point. This is similar to 'identity sync=true', but because it isn't GstBaseTransform-based, it can process GstBufferLists without breaking them into separate GstBuffers
-
Seungha Yang authored
g_log_writer_supports_color() was introduced since GLib 2.50.0 which is slightly higher version than our minimum required GLib version.
-
- Feb 25, 2020
-
-
Nirbheek Chauhan authored
We do not have a way to know the format modifiers to use with string functions provided by the system. `G_GUINT64_FORMAT` and other string modifiers only work for glib string formatting functions. We cannot use them for string functions provided by the stdlib. See: https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description F.ex.: ``` ../tools/gst-stats.c:921:11: error: too many arguments for format [-Werror=format-extra-args] printf ("Number of Buffers passed: %" G_GUINT64_FORMAT "\n", num_buffers); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../tools/gst-stats.c:922:11: error: unknown conversion type character 'l' in format [-Werror=format=] printf ("Number of Events sent: %" G_GUINT64_FORMAT "\n", num_events); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/gtypes.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/galloca.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib.h:30, from ../gst/gst.h:27, from ../tools/tools.h:28, from ../tools/gst-stats.c:30: /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here #define G_GUINT64_FORMAT "llu" ^ ``` and ``` ../tests/misc/netclock-replay.c: In function 'main': ../tests/misc/netclock-replay.c:98:23: error: unknown conversion type character 'l' in format [-Werror=format=] if (sscanf (line, "%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT " %" ^~~ In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib.h:30, from ../tests/misc/../../libs/gst/net/gstntppacket.c:38, from ../tests/misc/netclock-replay.c:31: /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here #define G_GUINT64_FORMAT "llu" ^ ``` This is needed for upgrading glib inside Cerbero which builds with `-Werror` on Windows: gstreamer/cerbero!419
-
- Feb 19, 2020
-
-
Tim-Philipp Müller authored
Seems unnecessary to print the parent name for every element in the pipeline graph, it's clear from the graph what the parent element is and it's hard to imagine a case where this is useful info rather than just distracting spam. So far this was only done for pads, but we should just do it for everything.
-
- Feb 15, 2020
-
-
A buffer to be skipped wasn't unref'd in gst_base_parse_chain(). Fixes #406
-
-
- Feb 14, 2020
-
-
When the user sets filters, we should not trace ref counts of object that are not traced. This optimizes the tracer by potentially avoiding generating useless backtraces.
-
Otherwise an application cannot rely on a subsequent call to e.g. gst_pad_query_duration() succeeding.
-
Previously we would use the object lock only for storing the sync handler and its user_data in a local variable, then unlock it and only then call the sync handler. Between unlocking and calling the sync handler it might be unset and the user_data be freed, causing it to be called with a freed pointer. To prevent this add a refcounting wrapper struct around the sync handler, hold the object lock while retrieving it and increasing the reference count and only actually free it once the reference count reaches zero. As a side-effect we can now also allow to actually replace the sync handler. Previously it was only allowed to clear it after initially setting it according to the docs, but the code still allowed to clear it and then set a different one. Fixes gstreamer/gstreamer#506
-
- Feb 13, 2020
-
-
Seungha Yang authored
Fixing markdown syntax
-
- Feb 12, 2020
-
-
Keep the ANY caps empty internally when appending and merging caps/structures. Previously, an ANY caps could end up containing internal structures, which could be fetched by the user, and gave the caps a non-zero length. Also, made sure that `gst_caps_set_features_simple` frees the features if caps is empty.
-
Fixed gst_caps_is_strictly_equal() to take into account whether either of the caps are ANY caps. Previously, two ANY caps could be considered not strictly equal if one of them still contained some remnant *internal* structure (this can happen if an ANY caps has emerged from an append or merge operation). Also, an ANY caps with no remnant internal structures was considered strictly equal to an EMPTY caps. Similarly, a non-ANY caps was considered strictly equal to an ANY caps if its remnant internal structures happened to match. Also changed gst_caps_is_fixed to take into account that an ANY caps should not be considered fixed even if it contains a single remnant internal fixed structure. This affects gst_caps_is_equal(), which uses a separate method if both caps are fixed. Previously, this meant that a non-ANY fixed caps was considered equal to an ANY caps if it contained a single matching remnant internal structure. Added some tests for these two equality methods, which covers the above examples, as well as asserts existing behaviour. Fixes #496
-
- Feb 10, 2020
-
-
Sebastian Dröge authored
This has the same function as the negotiate() functions in various other base classes and is required to be able to completely re-implement submit_input_buffer() in subclasses.
-
- Feb 04, 2020
-
-
When we do not have any information about DTSs we shouldn't try to make them up, moreover after seeking `segment->start` has nothing to do with the next buffer timing (and is probably after the actual buffer timestamp) and since, since fa831247 we do: ``` if (buffer->dts > buffer->dts) buffer->pts = buffer->dts ``` we end up setting `buffer->pts = segment->start` which is plain broken and leads to downstream decoder accept the first buffer as it will be inside the segment (its pts==segment->start) which basically means accurate seeking behaves mostly the same way as keyframe seeks. Fixes #492
-
- Jan 27, 2020
-
-
POSIX defines CLOCK_MONOTONIC to always be a macro, so I think it's safe to assume that CLOCK_TAI will also be.
-
GST_CLOCK_TYPE_TAI is GStreamer abstraction for CLOCK_TAI. Main motivation for this patch is support for transmission offloading features - when network packets are timestamped with the time they are deemed to be actually transmitted. Linux API for that requires that time to be in CLOCK_TAI coordinate. With GST_CLOCK_TYPE_TAI, applications can use CLOCK_TAI directly on their pipelines, avoiding the need to cross timestamp packet times. By leveraging system's CLOCK_TAI, applications also don't need to keep track of leap seconds - less burden for them. Just keep system's CLOCK_TAI accurate and use it.
-
- Jan 24, 2020
-
-
Sebastian Dröge authored
bin: Don't consider having a group-id or being STREAM_START if we have not a single STREAM_START message This would cause us to set GST_GROUP_ID_INVALID as group-id in the aggregated STREAM_START message if there are no sinks at all or none of them have a STREAM_START message, which is simply wrong. If we have not a single STREAM_START message then the bin should not be considered STREAM_START.
-