- Dec 06, 2020
- 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: <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: <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: <gst-plugins-base!962>
-
Part-of: <gst-plugins-base!962>
-
GstBuffer is not a GstObject, so this causes a warning to be emitted. Part-of: <gst-plugins-base!961>
-
- Dec 04, 2020
-
-
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: <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: <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 gst-plugins-base#821 Part-of: <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: <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: <gst-plugins-base!921>
-
- Dec 02, 2020
-
-
Part-of: <gst-plugins-base!955>
-
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: <!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 #834 Part-of: <!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: <!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: <!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: <!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: <!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: <!917>
-
- Nov 02, 2020
-
-
When the client disconnects immediately after connecting, the remote address is no longer available. Part-of: <!912>
-
- Oct 30, 2020
-
-
Part-of: <!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: <!906>
-
- Oct 29, 2020
- Oct 27, 2020
-
-
Tim-Philipp Müller authored
-
- Oct 26, 2020
- Oct 22, 2020
-
-
Setting telemetry options, even to zero, causes libtheora to enable an expensive code path. For large enough videos (e.g. 1920x1080) this can increase the time to decode each frame by 30-40 ms, which can be enough to cause noticeable stutter. Part-of: <!892>
-
GLSLstage creates the glShader using glCreateShader, but never calls glDeleteShader if the glShader is not used anymore. This forces the GL library to keep the compiled shader around, because it might be used in the future. Therefore, the glShader is leaked whenever a GLSLStage is destroyed. Fix the leak by deleting the glShader when finishing the GLSLStage. Part-of: <gstreamer/gst-plugins-base!891>
-
OutputSlotInfo doesn't hold ref of queue, so gst_bin_remove() will free the queue memory. Part-of: <gstreamer/gst-plugins-base!890>
-
Demonstrate a way to select multiple streams Part-of: <gstreamer/gst-plugins-base!889>
-
It's required for users to be able to figure out associated GstStream object with a pad on pad-added callback. Part-of: <gstreamer/gst-plugins-base!889>
-
- Oct 17, 2020
-
-
Part-of: <gstreamer/gst-plugins-base!878>
-
On macOS, for example, "text/*" can be returned as mimetype for plaintext files but we don't allow '*' in structure names and this would cause critical warnings. It's a valid mimetype but not a valid structure name. Fixes gstreamer/gstreamer#616 Part-of: <gstreamer/gst-plugins-base!877>
-
- Oct 14, 2020
-
-
Otherwise default handler will try to forward it to sink element or srcpad which might not be available at that moment.
-
These then don't require going through the generic code path via AYUV64 first but can be converted directly. This speeds up processing of videotestsrc ! v210 ! videoconvert ! other_format ! fakesink by a factor of 1.55 for I420/YV12 and 1.40 for the other destination formats and reduces memory pressure considerably. Part-of: <!870>
-