- Oct 21, 2020
-
-
Tim-Philipp Müller authored
-
Tim-Philipp Müller authored
- Oct 20, 2020
-
-
Tim-Philipp Müller authored
From 59cb678 to a825d27
-
- Sep 28, 2020
-
-
Part-of: <gstreamer/gst-plugins-good!739>
-
As we override the GLib item with our own structure, we cannot use any function from GList or GQueue that would try to free the RTPJitterBufferItem. In this patch, we move away from g_queue_new() which forces using g_queue_free(). This this function could use g_slice_free() if there is any items left in the queue. Passing the wrong size to GSLice may cause data corruption and crash. A better approach would be to use a proper intrusive linked list implementation but that's left as an exercise for the next person running into crashes caused by this. Be ware that this regression was introduced 6 years ago in the following commit [0], the call to flush() looked useless, as there was a g_queue_free() afterward. Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> [0] gstreamer/gst-plugins-good@479c7642 Part-of: <gstreamer/gst-plugins-good!739>
-
This patch will now set the maximum of buffers to 32, allowing to grow the pool for drivers that supports that and will respect the minimum buffers reported by the driver. This was made to fix a stall with the virtio CODEC driver. Fixes #672 Part-of: <gstreamer/gst-plugins-good!738>
-
- Sep 27, 2020
-
-
Expected return value for unhandled query is FALSE Part-of: <gstreamer/gst-plugins-good!752>
-
Instead of recursing, simply implement a loop with gotos, the same way it was done before 81217528 Fixes gstreamer/gst-plugins-good#710 Part-of: <gstreamer/gst-plugins-good!751>
-
The key is to make sure the jitterbuffer is set to NULL *before* the ptdemux. The race that existed would basically happen when ptdemux had reached READY, and the jitterbuffer would then push a buffer, triggering a new pad with a new payloadtype being added and ghosted to the rtpbin itself. However, the srcpad of the ptdemux would now be inactive, and all the sticky-event pushed on it would be swallowed, not allowing any to reach the ghost-pad. Then the buffer in-flight would come to the ghostpad, and we would assert that a buffer arrived before the necessary events. By simply re-ordering the state-changes, we ensure that there will be no buffer racing into the ptdemux while its state is being changed, and the problem disappears completely. Notice also that there is not point in disconnecting the signals on the ptdemux before this point, since we need the push-thread to settle down before we can do this in a non-racy way. Part-of: <gstreamer/gst-plugins-good!443>
-
- Sep 25, 2020
-
-
Some cameras (Panacast) have buggy drivers/firmware which send invalid JPEG frames, containing no data, which makes jpegdec crash because it assumes the frame is at least 2 bytes long. Part-of: <gstreamer/gst-plugins-good!750>
-
Previously, the user input for stsd entries is trusted completely, and so a maliciously crafted file could choose the length of the stsd entries arbitrarily and cause qtdemux to try to allocate up to 2GB of memory (half of a 32 bit max int). This patch fixes this by sanity checking the stsd input against the size of the entire stsd atom. Part-of: <gstreamer/gst-plugins-good!749>
-
During trak parsing, we need to check for the existence of stsd_entries, otherwise, we end up with a NULL pointer to them. It is entirely possible for the stsd to exist, but for it to have no entries, which the previous checks did not take into account. This patch adds a simply check to ensure that all files that do not contain a stsd entry are deemed corrupt, and adds a test case to prevent a regression. Part-of: <gstreamer/gst-plugins-good!749>
-
This fixes writing of the seek table header. gst_audio_encoder_get_audio_info() will still return old/unset audio info until set_format() has actually returned, which then results in query_total_samples() to always return 0. Thanks to Jacob Kauffmann for debugging this and finding the main cause. Fixes gstreamer/gst-plugins-good#756 Part-of: <gstreamer/gst-plugins-good!748>
-
Fix regression introduced in 7bc5e28d preventing the device provider to send the device-added message for new devices. By early returning the patch was discarding add/remove events. Fix #735 Part-of: <gstreamer/gst-plugins-good!747>
-
gst_element_class_set_metadata is meant to only be used with static or inlined strings, which isn't the case for the 2 elements here resulting in use-after-free later on. https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c#gst_element_class_set_static_metadata Part-of: <gstreamer/gst-plugins-good!746>
-
Use speex_header_free() to free memory which was allocated by library. Cross-CRT issue should not happen on 1.17 Cerbero build but might happen custom build or so. Part-of: <gstreamer/gst-plugins-good!745>
-
It's an integer property and rtpbin also expects an integer. Passing it as a GstClockTime (guint64) to g_object_set() will cause problems, and on big endian MIPS apparently causes crashes. Fixes gstreamer/gst-plugins-good#737 Part-of: <gstreamer/gst-plugins-good!744>
-
And let it rety twice. Fixes gstreamer/gst-plugins-good#717 Part-of: <gstreamer/gst-plugins-good!743>
-
Switching the deinterlacing mode on-the-fly from disabled to auto used to work, but was broken by commit #1f21747c some years ago. Force re-negotiation with downstream when the mode or fields properties are changed, otherwise deinterlace never switches out of the passthrough mode. Part-of: <gstreamer/gst-plugins-good!742>
-
Previously this would end up in a refcounting loop of hell. Part-of: <gstreamer/gst-plugins-good!741>
-
Part-of: <gstreamer/gst-plugins-good!740>
-
- Sep 24, 2020
-
-
Port objects acquired with jack_get_ports() need to be freed with jack_free(3), not stdlib free(). On Windows, Jack may be linked against different libc than GStreamer libraries so free()ing port objects directly might cause crash because of libc mismatch. Part-of: <gstreamer/gst-plugins-good!737>
-
- Jun 07, 2020
-
-
Each FLAC metadata block starts with a flag denoting whether it is the last metadata block. The existing flacparse code moves any existing VORBISCOMMENT block to immediately follow the STREAMINFO block without changing any block's last-metadata-block flag. If no VORBISCOMMENT block exists, it created one with the last-metadata-block flag set to true. This results in gstflacdec sometimes giving bad headers to libflac when trying to play perfectly valid FLAC files depending on the file's metadata ordering. Depending on the contents of the other metadata blocks, current versions of libflac may or may not return FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER when given this broken metadata. This is most noticeable with files that have a large cover art image attached where VORBISCOMMENT is the very last metadata block with no PADDING afterwards. This patch changes that behavior so that: 1. For FLAC files that already have a VORBISCOMMENT block, the metadata order is preserved. 2. For FLAC files that do not have a VORBISCOMMENT block, the generated dummy VORBISCOMMENT is placed immediately after STREAMINFO and inherits the last-metadata-block flag from STREAMINFO. gstreamer/gst-plugins-good#484
-
- Jun 06, 2020
-
-
RTP session starts a new thread for RTCP and names it "rtpsession-rtcp-thread" which happens to be longer than the maximum 16B allowed by pthread_setname_np and causes the naming to fail. See docs for more details. This commit simply shortens the thread's name so it can actually be set.
-
- Mar 13, 2020
-
-
Tim-Philipp Müller authored
-
-
-
- Feb 10, 2020
-
-
gstrtspsrc uses a queue, set_get_param_q, to store set param and get param requests. The requests are put on the queue by calling get_parameters() and set_parameter(). A thread which executs in gst_rtspsrc_thread() then pops requests from the queue and processes them. The crash occured because the queue became empty and a NULL request object was then used. The reason that the queue became empty is that it was popped even when the thread was NOT processing a get parameter or set parameter command. The fix is to make sure that the queue is ONLY popped when the command being processed is a set parameter or get parameter command.
-
- Feb 08, 2020
-
-
The GstVideoFormat to v4l2 conversion was missing for BGR15.
-
gst_v4l2_object_set_format_full() was returning FALSE without setting an error. Caller code (gst_v4l2src_fixate()) was then derefing a NULL pointer when trying to handle the error.
-
- Feb 04, 2020
-
-
In Google webrtc, the setting VP8E_SET_STATIC_THRESHOLD is set to 1 (except when the content is known to be static very often in which case it is set to 100, i.e. when sharing screen with Google Hangouts). The cpu usage drops a lot when using 1 for above setting because it allows the encoder to skip static/low content blocks. The current 0 default value uses too much cpu and confuses the user regarding the cpu usage expectations. User expects vp8enc to use low cpu by default. Documentation of VP8E_SET_STATIC_THRESHOLD: https://github.com/webmproject/libvpx/blob/master/vpx/vp8cx.h#L188 chromium/webrtc: https://chromium.googlesource.com/external/webrtc/+/b484ec0082948ae086c2ba4142b4d2bf8bc4dd4b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc#822 Closes #58
-
Without this check, the element will crash instead of returning an error.
-
- Jan 14, 2020
-
-
The channel position is an enum but the conversion code assumed it's a mask. Convert accordingly.
-
- Jan 07, 2020
-
-
- Dec 06, 2019
-
-
Tim-Philipp Müller authored
Add parsed=true to output caps, as we always output whole frames, timestamped and all. Means also that the output can be decoded by avdec_mjpeg wihout plugging an extra parser (which has no rank).
-
There are in the wild (mp4) streams that basically contain no tracks but do have a redirect info[0], in which case, we won't be able to expose any pad (there are no tracks) so we can't post anything but an error on the bus, as: - it can't send EOS downstream, it has no pad, - posting an EOS message will be useless as PAUSED state can't be reached and there is no sink in the pipeline meaning GstBin will simply ignore it The approach here is to to add details to the ERROR message with a `redirect-location` field which elements like playbin handle and use right away. [0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
-
- Dec 03, 2019
-
-
Tim-Philipp Müller authored
-
Tim-Philipp Müller authored