- Jan 13, 2021
-
-
See gstreamer/gst-plugins-base#845 Part-of: <gstreamer/gst-plugins-base!1007>
-
This was only taken care of previously if there was a decoder before. However if previously a decoder was not needed then the ghostpad would've been linked directly to the slot's srcpad. Reconfiguring the slot requires this to be undone so that linking can happen normally. Part-of: <gstreamer/gst-plugins-base!987>
- Jan 12, 2021
-
-
Replace hardcoded 255s with the correct max value for the given color depth. Use 64-bit integer in calculations where overflow may occur. Part-of: <gstreamer/gst-plugins-base!1006>
-
- Jan 05, 2021
-
-
Fixes: gstreamer/gst-plugins-base#854 Part-of: <gstreamer/gst-plugins-base!998>
-
- Jan 04, 2021
-
-
Tim-Philipp Müller authored
Elements operating in pull mode may optionally pass a buffer to pull_range that should be filled with the data. The only element that does that at the moment is oggdemux operating in pull mode. tagdemux currently creates a sub-buffer whenever a buffer pulled from upstream (filesrc, usually) needs to be trimmed. This creates a new buffer, however, so disregards any passed-in buffer from a downstream oggdemux. This would cause assertion failures and playback problems for ogg files that contain ID3 tags at the end. Fixes gstreamer/gst-plugins-base#848 Part-of: <gstreamer/gst-plugins-base!995>
-
- Jan 01, 2021
-
-
The correct way to determine the byte offset at a certain yoffset in a subsampled component is to shift the yoffset by the component's hsub This fixes out-of-bounds memory accesses and visible artefacts, example pipeline with the samples from #802: gst-launch-1.0 compositor name=vmixer sink_1::xpos=1910 sink_1::ypos=1080 ! \ videoconvert ! videorate ! xvimagesink \ filesrc location=VID_20200723_203606.mp4 ! decodebin name=demux1 ! \ queue ! videoflip method=vertical-flip ! vmixer. \ filesrc location=bridgeoverstubbledwater.mp4 ! decodebin name=demux2 ! \ queue ! vmixer. Part-of: <gstreamer/gst-plugins-base!989>
-
- Dec 31, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!993>
-
This situation happens in the situation where an input stream has a framerate exceeding the timeout latency (Ex: 1fps with a latency of 500ms) and an input stream greater than output framerate (ex: 60fps in, 30 fps out). The problem that would happen is that we would timeout, but then buffers from the fast input stream would only be popped out one by one.... until a buffer reaches the low-framerate input stream at which point they would quickly be popped out/used. The resulting output would be "slow ... fast ... slow ... fast" of that input fast stream. In order to avoid this situation, whenever we detect a late buffer, check if there's a next one and re-check with that one. Part-of: <gstreamer/gst-plugins-base!991>
-
- Dec 15, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!978>
-
- Dec 14, 2020
-
-
libvisual api expects a priv data pointer to be passed, though we know its going to be `GstDebugLevel`. ``` ../subprojects/gst-plugins-base/ext/libvisual/plugin.c:33:39: error: cast to smaller integer type 'GstDebugLevel' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast] GST_CAT_LEVEL_LOG (libvisual_debug, (GstDebugLevel) (priv), NULL, "%s - %s", ``` Part-of: <gstreamer/gst-plugins-base!976>
-
- Dec 11, 2020
-
-
We can't keep the lock otherwise this would lock other actions. In order to keep it safe, we grab a list of peer pads to send EOS to with the lock taken, then send to the peer pads with the lock released. Also make sure the selection lock is taken for another call to this function Fixes gstreamer/gst-plugins-base#847 Part-of: <gstreamer/gst-plugins-base!973>
-
- Dec 06, 2020
-
-
Tim-Philipp Müller authored
-
- Dec 05, 2020
-
-
The sink_query just uses context, other_context and display to query info. But all these objects can be changed or distroyed in state_change() func and other places. This patch is not very perfect. The condition race still exists in other places in this element. All the functions directly access these objects without protection. Most of them are executed when the data is pushing and draw context/window have already been established, so they should not have problems. But the sink_query and propose_allocation functions are the query -like functions and executed in query context, which can be called in any state of the element. So it can cause some crash issues because of destroyed context object. Part-of: <gstreamer/gst-plugins-base!962>
-
We should not return a NULL in transform_caps() function. The NULL will generate a assert of: "transform_caps returned caps which are not a real subset of the filter caps" in transform base class. Part-of: <gstreamer/gst-plugins-base!962>
-
In find_gl_context_unlocked(), the display of filter may be NULL and can cause crash if we directly access and lock it. Part-of: <gstreamer/gst-plugins-base!962>
-
Part-of: <gstreamer/gst-plugins-base!962>
-
GstBuffer is not a GstObject, so this causes a warning to be emitted. Part-of: <gstreamer/gst-plugins-base!961>
-
- Dec 04, 2020
-
-
gstreamer/gst-plugins-base!681 added a layoutSubViews, which never gets called, because it should have been called layoutSubviews (non-capital "v"). However after fixing that, it still doesn't work correctly, because window_width/height values are immediately updated and then draw_cb will never trigger the resize path, because the values are already up to date. Update the values inside the resize path again instead, so the check for entering the resize path is logically always correct. This makes the layoutSubviews unnecessary, as it only updated the internal size values prematurely, so it is deleted instead of method naming fixed. These changes were originally done to avoid accessing UIKit objects on the main thread, but no additional accesses are added here, only internal private variable assignments under the same draw_lock, so there should be no threading issues reintroduced. Part-of: <gstreamer/gst-plugins-base!960>
-
A CGSize contains CGFloat values (a typedef to double or float), which means that the values aren't equal, despite it being equal after they are cast to int by assigning them to window_height/width private members. This leads to excessive gst_gl_window_resize calls on each frame, at least if the CGFloat value has a .5 decimal value, e.g. 103.5. Fix it by storing them as CGFloat instead of gint. Part-of: <gstreamer/gst-plugins-base!960>
-
The exising hardcoded max default does not account for the possible -1 offset when retrieving lines for resampling. As a result, when another chain has the same number of cache lines (4), the resample operation would be attempting to generate 5 lines with a cache size of 4 and would overwrite the first cache line. Fixes gstreamer/gst-plugins-base#821 Part-of: <gstreamer/gst-plugins-base!959>
-
The base class' context may change, we should use the common API with lock to access it, rather than the just directly access the struct field. Part-of: <gstreamer/gst-plugins-base!921>
-
The inside upload and context may have race condition in the function of propose_allocation(). They may be destroyed while this function is stilling using it. Part-of: <gstreamer/gst-plugins-base!921>
-
- Dec 02, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!955>
-
Fix #838 Part-of: <gstreamer/gst-plugins-base!954>
-
Currently max-errors gets set during init to default or via property. However, if a decoder element calls gst_audio_decoder_reset with 'full' argument set to TRUE, it would result in all the fields of context being zeroed with memset. This effectively results in max-errors getting a value of 0 overriding the default or user requested value set during init. This would result in calls to GST_AUDIO_DECODER_ERROR which track error counts and allow max-errors, to be ineffective. To fix this move max-errors out of GstAudioDecoderContext, as changes to context should not affect this. The error_count is anyways also in GstAudioDecoderPrivate and not in context. Part-of: <gstreamer/gst-plugins-base!953>
-
- Nov 19, 2020
-
-
Introduced by previous commit See gstreamer/gst-plugins-base!933 Part-of: <gstreamer/gst-plugins-base!935>
-
There's no guarantee that upstream elements will do queries with specified filter caps. If that's the case, just return GST_CAPS_ANY Part-of: <gstreamer/gst-plugins-base!935>
-
- Nov 11, 2020
-
-
Trying to use gst_encoding_profile_get_file_extension on a GstEncodingProfile with a cap containing a typo would result in strcmp being called with NULL. Instead use g_strcmp0 that handles this case. Part-of: <gstreamer/gst-plugins-base!930>
-
- Nov 10, 2020
-
-
In the case `videoaggregator` is set as allowing format conversions, and as we convert only on the sinkpads, we should ensure that the chosen format is usable by the subclass. This in turns implies that the format is usable on the srcpad. When doing conversion *any* format can be used on the sinkpads, and this is the only way that we can avoid race conditions during renegotiations so we can not change that fact, we just need to ensure that the chosen intermediary format is usable, which was not actually ensured before that patch. Fixes gstreamer/gst-plugins-base#834 Part-of: <gstreamer/gst-plugins-base!928>
-
Since 23189c60 we started using the useless result of `modified_caps` which, was never used since it was introduced 7 years ago (in videomixer2). The intersection is useless and we should just avoid doing it at all (which was always the case before) as it can end up failing renegotiation for bad reasons. Part-of: <gstreamer/gst-plugins-base!907>
-
- Nov 09, 2020
-
-
Jan Alexander Steffens authored
`gst_video_aggregator_default_negotiated_src_caps` races with `gst_video_aggregator_reset` called by `gst_video_aggregator_release_pad` of the last sinkpad. It can happen that `latency = gst_util_uint64_scale (...` gets called with a zero framerate. There doesn't seem to be any reason not to use the local `info` instead of `vagg->info`, so do that. Cherry-picked changes from b3fe2d36. Part-of: <gstreamer/gst-plugins-base!926>
-
Jan Alexander Steffens authored
Take `GST_OBJECT_LOCK` when writing `vagg->info`, so that reading in subclasses is protected against races, as documented in the struct. /*< public >*/ /* read-only, with OBJECT_LOCK */ GstVideoInfo info; Cherry-picked changes from b3fe2d36. Part-of: <gstreamer/gst-plugins-base!926>
-
@mode has been renamed to gst_video_decoder_set_interlaced_output_state() but not in the header file, raising a doc warning. Part-of: <gstreamer/gst-plugins-base!925>
-
- Nov 05, 2020
-
-
The operations for the inside GstGLUploadElement->upload have race condition. The _transform_caps() will creates this object if it does not exist, while the _stop() and change_state() can destroy this object. The _transform_caps() is called by the gst_base_transform_query(), so it does not hold the stream lock. It may use the upload while the _stop() and change_state() has already destroy that object, and then crash. Fix: #645 Part-of: <gstreamer/gst-plugins-base!920>
-
- Nov 04, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!917>
-
- Nov 02, 2020
-
-
When the client disconnects immediately after connecting, the remote address is no longer available. Part-of: <gstreamer/gst-plugins-base!912>
-
- Oct 30, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!903>
-
Occasionally, a clean build would fail like this: In file included from ../subprojects/gst-plugins-base/tests/examples/gl/gtk/gstgtk.c:24: ../subprojects/gst-plugins-base/gst-libs/gst/gl/gl.h:25:10: fatal error: gst/gl/gl-enumtypes.h: No such file or directory 25 | #include <gst/gl/gl-enumtypes.h> | ^~~~~~~~~~~~~~~~~~~~~~~ Add the missing dependency so that the headers are generated beforehand. Part-of: <gstreamer/gst-plugins-base!906>
-