Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer-plugins-base for openSUSE:Factory checked in at 2021-04-10 15:26:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old) and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base" Sat Apr 10 15:26:32 2021 rev:76 rq:883602 version:1.18.4 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes 2021-01-20 18:24:19.307348540 +0100 +++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.2401/gstreamer-plugins-base.changes 2021-04-10 15:27:14.962369425 +0200 @@ -1,0 +2,16 @@ +Tue Mar 30 08:59:41 UTC 2021 - Antonio Larrosa <alarr...@suse.com> + +- Update to version 1.18.4: + + tag: id3v2: fix frame size check and potential invalid reads + + audio: Fix gst_audio_buffer_truncate() meta handling for non-interleaved audio + + audioresample: respect buffer layout when draining + + audioaggregator: fix input_buffer ownership + + decodebin3: change stream selection message owner, so that the app sends the stream-selection event to the right element + + rtspconnection: correct data_size when tunneled mode + + uridecodebin3: make caps property work + + video-converter: Don't upsample invalid lines + + videodecoder: Fix racy critical when pool negotiation occurs during flush + + video: Convert gst_video_info_to_caps() to take self as const ptr + + examples: added qt core dependency for qt overlay example + +------------------------------------------------------------------- Old: ---- gst-plugins-base-1.18.3.tar.xz New: ---- gst-plugins-base-1.18.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-plugins-base.spec ++++++ --- /var/tmp/diff_new_pack.jy40ng/_old 2021-04-10 15:27:15.534370099 +0200 +++ /var/tmp/diff_new_pack.jy40ng/_new 2021-04-10 15:27:15.534370099 +0200 @@ -20,10 +20,10 @@ %define gst_branch 1.0 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//") Name: gstreamer-plugins-base -Version: 1.18.3 +Version: 1.18.4 Release: 0 Summary: GStreamer Streaming-Media Framework Plug-Ins -License: LGPL-2.1-or-later AND GPL-2.0-or-later +License: GPL-2.0-or-later AND LGPL-2.1-or-later Group: Productivity/Multimedia/Other URL: https://gstreamer.freedesktop.org # Disable tarball source url, use _service ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jy40ng/_old 2021-04-10 15:27:15.554370122 +0200 +++ /var/tmp/diff_new_pack.jy40ng/_new 2021-04-10 15:27:15.554370122 +0200 @@ -9,7 +9,7 @@ <!-- <param name="changesgenerate">enable</param> --> - <param name="revision">1.18.3</param> + <param name="revision">1.18.4</param> <param name="scm">git</param> </service> <service name="recompress" mode="disabled"> ++++++ gst-plugins-base-1.18.3.tar.xz -> gst-plugins-base-1.18.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/ChangeLog new/gst-plugins-base-1.18.4/ChangeLog --- old/gst-plugins-base-1.18.3/ChangeLog 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/ChangeLog 2021-03-15 18:48:00.000000000 +0100 @@ -1,3 +1,158 @@ +=== release 1.18.4 === + +2021-03-15 17:47:59 +0000 Tim-Philipp M??ller <t...@centricular.com> + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-base.doap: + * meson.build: + Release 1.18.4 + +2021-03-03 01:08:25 +0000 Tim-Philipp M??ller <t...@centricular.com> + + * gst-libs/gst/tag/id3v2frames.c: + tag: id3v2: fix frame size check and potential invalid reads + Check the right variable when checking if there's + enough data left to read the frame size. + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/876 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1066> + +2021-03-10 14:26:22 +0100 Guillaume Desmottes <guillaume.desmot...@collabora.com> + + * gst-libs/gst/audio/gstaudioaggregator.c: + audioaggregator: fix input_buffer ownership + The way pad->priv->input_buffer reference was managed was pretty + spurious: + - it was overridden without unrefing it, which could potentially lead to + leaks. + - we were unreffing it while keeping the pointer around, which could + potentially lead to use-after-free or double-free. + As priv->input_buffer is actually no longer used outside of the + aggregate() method, remove it from pad->priv to simplify the code and + prevent the issues desribed above. + Fix a single buffer leak when shutting down the pipeline as the buffer + returned from gst_aggregator_pad_drop_buffer() was never unreffed. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1062> + +2021-03-10 16:22:14 +0100 Guillaume Desmottes <guillaume.desmot...@collabora.com> + + * gst-libs/gst/audio/gstaudioaggregator.c: + audioaggregator: fix input buffer when converting + This code path is meant to convert the current buffer to the new format + on update. It was using priv->input_buffer as input which is either + priv->buffer or a converted version of it. + Use priv->buffer instead as priv->input_buffer may no longer be a valid + reference. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1062> + +2021-02-19 16:44:35 +0200 Vivia Nikolaidou <vi...@ahiru.eu> + + * gst-libs/gst/video/video-converter.c: + video-converter: Don't upsample/downsample/dither invalid lines + This is a fallout from the conversion to support multiple threads. + convert->upsample_p is never NULL now, it's always an allocated array of + n_threads potentially-null pointers. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1054> + +2021-02-25 11:03:31 +0100 Kristofer Bj??rkstr??m <krist...@axis.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + gstrtspconnection: correct data_size when tunneled mode + gst_rtsp_connection_send_messages_usec in tunneled mode does base64 + encode messages. When calculating data_size 1 bytes is added, which + results in ending the base64 with a NULL. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1053> + +2021-02-24 19:51:40 +0200 Sebastian Dr??ge <sebast...@centricular.com> + + * gst-libs/gst/audio/gstaudioaggregator.c: + audioaggregator: Log if the sample rate of one sinkpad is not accepted + Otherwise this can silently cause not-negotiated errors without any + direct hint about what went wrong. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1052> + +2021-02-22 15:36:53 +0900 Jeongki Kim <jeongki....@jeongki.kim> + + * gst/audioresample/gstaudioresample.c: + audioresample: Respect buffer layout when drain + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1050> + +2021-01-19 15:56:18 +0100 St??phane Cerveau <scerv...@collabora.com> + + * gst/playback/gstdecodebin3.c: + decodebin3: change stream selection message owner + In order to select the streams on GST_MESSAGE_STREAM_COLLECTION, + the app needs to send the select-streams event + to the decodebin and not to the parsebin. + The message should be always owned by the decodebin. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1044> + +2021-02-15 16:05:30 +0000 Tim-Philipp M??ller <t...@centricular.com> + + * gst/playback/gsturidecodebin3.c: + uridecodebin3: make caps property work + The caps set on uridecodebin3 via the "caps" property + were never passed to the internal decodebin3, so did + absolutely nothing. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/837 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1038> + +2021-02-13 00:27:04 +0100 Alicia Boya Garc??a <ntr...@gmail.com> + + * gst-libs/gst/video/gstvideodecoder.c: + videodecoder: Fix racy critical when pool negotiation occurs during flush + I found a rather reproducible race in a WebKit LayoutTest when a player + was intantiated and a VP8/9 video was loaded, then torn down after + getting the video dimensions from the caps. + The crash occurs during the handling of the first frame by gstvpxdec. + The following actions happen sequentially leading to a crash. + (MT=Main Thread, ST=Streaming Thread) + MT: Sets pipeline state to NULL, which deactivates vpxdec's srcpad, + which in turn sets its FLUSHING flag. + ST: gst_vpx_dec_handle_frame() -- which is still running -- calls + gst_video_decoder_allocate_output_frame(); this in turn calls + gst_video_decoder_negotiate_unlocked() which fails because the + srcpad is FLUSHING. As a direct consequence of the negotiation + failure, a pool is NOT set. + gst_video_decoder_negotiate_unlocked() still assumes there is a + pool, crashing in a critical in gst_buffer_pool_acquire_buffer() + a couple statements later. + This patch fixes the bug by returning != GST_FLOW_OK when the + negotiation fails. If the srcpad is FLUSHING, GST_FLOW_FLUSHING is + returned, otherwise GST_FLOW_ERROR is used. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1037> + +2021-02-15 17:22:47 +0100 Jan Alexander Steffens (heftig) <jan.steff...@ltnglobal.com> + + * gst-libs/gst/audio/audio.c: + libs: audio: Fix gst_audio_buffer_truncate meta handling + In the non-interleaved case, it made `buffer` writable but then changed + the meta of the non-writable buffer. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1036> + +2021-01-26 14:05:48 +0100 Knobe, Daniel <daniel.kn...@miele.com> + + * tests/examples/overlay/meson.build: + overlay/example: added qt core dependency for qt overlay example + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1026> + +2021-01-12 10:36:34 +0100 Marijn Suijten <marijn...@gmail.com> + + * gst-libs/gst/video/video-info.c: + * gst-libs/gst/video/video-info.h: + video: Convert info_to_caps to take self as const ptr + This requires a slight modification to the function itself because it + was overwriting a member locally. + However, now this side-effect cannot be observed outside the function + anymore. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1024> + +2021-01-14 02:16:57 +0000 Tim-Philipp M??ller <t...@centricular.com> + + * meson.build: + Back to development + === release 1.18.3 === 2021-01-13 21:07:11 +0000 Tim-Philipp M??ller <t...@centricular.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/NEWS new/gst-plugins-base-1.18.4/NEWS --- old/gst-plugins-base-1.18.3/NEWS 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/NEWS 2021-03-15 18:48:00.000000000 +0100 @@ -2,13 +2,13 @@ GStreamer 1.18.0 was originally released on 8 September 2020. -The latest bug-fix release in the 1.18 series is 1.18.3 and was released -on 13 January 2021. +The latest bug-fix release in the 1.18 series is 1.18.4 and was released +on 15 March 2021. See https://gstreamer.freedesktop.org/releases/1.18/ for the latest version of this document. -Last updated: Wednesday 13 January 2021, 20:00 UTC (log) +Last updated: Monday 15 March 2021, 13:00 UTC (log) Introduction @@ -2717,6 +2717,168 @@ - List of Merge Requests applied in 1.18.3 - List of Issues fixed in 1.18.3 +1.18.4 + +The fourth 1.18 bug-fix release (1.18.4) was released on 15 March 2021. + +This release only contains bugfixes and security fixes and it should be +safe to update from 1.18.x. + +Highlighted bugfixes in 1.18.4 + +- important security fixes for ID3 tag reading, matroska and realmedia + parsing, and gst-libav audio decoding +- audiomixer, audioaggregator: input buffer handling fixes +- decodebin3: improve stream-selection message handling +- uridecodebin3: make ???caps??? property work +- wavenc: fix writing of INFO chunks in some cases +- v4l2: bt601 colorimetry, allow encoder resolution changes, fix + decoder frame rate negotiation +- decklinkvideosink: fix auto format detection, and fixes for 29.97fps + framerate output +- mpeg-2 video handling fixes when seeking +- avviddec: fix bufferpool negotiation and possible memory corruption + when changing resolution +- various stability, performance and reliability improvements +- memory leak fixes +- build fixes: rpicamsrc, qt overlay example, d3d11videosink on UWP + +gstreamer + +- info: Don???t leak log function user_data if the debug system is + compiled out +- task: Use SetThreadDescription() Win32 API for setting thread names, + which preserves thread names in dump files. +- buffer, memory: Mark info in map functions as caller-allocates and + pass allocation params as const pointers where possible +- clock: define AUTO_CLEANUP_FREE_FUNC for GstClockID + +gst-plugins-base + +- tag: id3v2: fix frame size check and potential invalid reads +- audio: Fix gst_audio_buffer_truncate() meta handling for + non-interleaved audio +- audioresample: respect buffer layout when draining +- audioaggregator: fix input_buffer ownership +- decodebin3: change stream selection message owner, so that the app + sends the stream-selection event to the right element +- rtspconnection: correct data_size when tunneled mode +- uridecodebin3: make caps property work +- video-converter: Don???t upsample invalid lines +- videodecoder: Fix racy critical when pool negotiation occurs during + flush +- video: Convert gst_video_info_to_caps() to take self as const ptr +- examples: added qt core dependency for qt overlay example + +gst-plugins-good + +- matroskademux: header parsing fixes +- rpicamsrc: depend on posix threads and vchiq_arm to fix build on + raspios again +- wavenc: Fixed INFO chunk corruption, caused by odd sized data not + being padded +- wavpackdec: Add floating point format support to fix distortions in + some cases +- v4l2: recognize V4L2 bt601 colorimetry again +- v4l2videoenc: support resolution change stream encode +- v4l2h265codec: fix HEVC profile string issue +- v4l2object: Need keep same transfer as input caps +- v4l2videodec: Fix vp8 and vp9 streams can???t play on board with + vendor bsp +- v4l2videodec: fix src side frame rate negotiation + +gst-plugins-bad + +- avwait: Don???t post messages with the mutex locked +- d3d11h264dec: Reconfigure decoder object on DPB size change and keep + track of actually configured DPB size +- dashsink: fix double unref of sinkpad caps +- decklinkvideosink: Use correct numerator for 29.97fps +- decklinkvideosink: fix auto format detection +- decklinksrc: Use a more accurate capture time +- d3d11videosink: Fix build error on UWP +- interlace: negotiation and buffer leak fixes +- mpegvideoparse: do not clip, so decoder receives data from keyframe + even if it???s before the segment start +- mpegtsparse: Fix switched DTS/PTS when set-timestamps=false +- nvh264sldec: Reopen decoder object if larger DPB size is required +- sdpsrc: fix double free if sdp is provided as string via the + property +- vulkan: Fix elements long name. + +gst-plugins-ugly + +- rmdemux: Make sure we have enough data available when parsing + audio/video packets + +gst-libav + +- avviddec: take the maximum of the height/coded_height +- viddec: don???t configure an incorrect buffer pool when receiving a + gap event +- audiodec: fix stack overflow in gst_ffmpeg_channel_layout_to_gst() + +gst-rtsp-server + +- rtspclientsink: fix deadlock on shutdown if no data has been + received yet +- rtspclientsink: fix leaks in unit tests +- rtsp-stream: avoid deadlock in send_func +- rtsp-client: cleanup transports during TEARDOWN + +gstreamer-vaapi + +- h264 encoder: append encoder exposure to aud +- postproc: Fix a problem of propose_allocation when passthrough +- glx: Iterate over FBConfig and select 8 bit color size + +gstreamer-sharp + +- no changes + +gst-omx + +- no changes + +gst-python + +- no changes + +gst-editing-services + +- group: Use proper group constructor + +gst-integration-testsuites + +- no changes + +gst-build + +- no changes + +Cerbero build tool and packaging changes in 1.18.4 + +- macOS: more BigSur fixes +- glib: Backport patch to set thread names on Windows 10 + +Contributors to 1.18.4 + +Alicia Boya Garc??a, Ashley Brighthope, Bing Song, Branko Subasic, Edward +Hervey, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander +Steffens (heftig), Jeongki Kim, Jordan Petridis, Knobe, Kristofer +Bj??rkstr??m, Marijn Suijten, Matthew Waters, Paul Goulpi??, Philipp Zabel, +Rafa?? Dzi??giel, Sebastian Dr??ge, Seungha Yang, Staz M, St??phane Cerveau, +Thibault Saunier, Tim-Philipp M??ller, V??ctor Manuel J??quez Leal, Vivia +Nikolaidou, Vladimir Menshakov, + +??? and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.18.4 + +- List of Merge Requests applied in 1.18.4 +- List of Issues fixed in 1.18.4 + Schedule for 1.20 Our next major feature release will be 1.20, and 1.19 will be the @@ -2724,9 +2886,9 @@ development of 1.19/1.20 will happen in the git master branch. The plan for the 1.20 development cycle is yet to be confirmed, but it -is now expected that feature freeze will take place some time in -January/February 2021, with the first 1.20 stable release hopefully -around February/March 2021. +is now expected that feature freeze will take place some time in April +2021, with the first 1.20 stable release hopefully around April/May +2021. 1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/RELEASE new/gst-plugins-base-1.18.4/RELEASE --- old/gst-plugins-base-1.18.3/RELEASE 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/RELEASE 2021-03-15 18:48:00.000000000 +0100 @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-base 1.18.3. +This is GStreamer gst-plugins-base 1.18.4. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst/audioresample/gstaudioresample.c new/gst-plugins-base-1.18.4/gst/audioresample/gstaudioresample.c --- old/gst-plugins-base-1.18.3/gst/audioresample/gstaudioresample.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst/audioresample/gstaudioresample.c 2021-03-15 18:48:00.000000000 +0100 @@ -557,7 +557,8 @@ gst_audio_resample_dump_drain (GstAudioResample * resample, guint history_len) { gsize out_len, outsize; - gpointer out[1]; + GstBuffer *outbuf; + GstAudioBuffer abuf; out_len = gst_audio_converter_get_out_frames (resample->converter, history_len); @@ -565,11 +566,19 @@ return; outsize = out_len * resample->out.bpf; + outbuf = gst_buffer_new_and_alloc (outsize); - out[0] = g_malloc (outsize); + if (GST_AUDIO_INFO_LAYOUT (&resample->out) == + GST_AUDIO_LAYOUT_NON_INTERLEAVED) { + gst_buffer_add_audio_meta (outbuf, &resample->out, out_len, NULL); + } + + gst_audio_buffer_map (&abuf, &resample->out, outbuf, GST_MAP_WRITE); gst_audio_converter_samples (resample->converter, 0, NULL, history_len, - out, out_len); - g_free (out[0]); + abuf.planes, out_len); + gst_audio_buffer_unmap (&abuf); + + gst_buffer_unref (outbuf); } static void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst/playback/gstdecodebin3.c new/gst-plugins-base-1.18.4/gst/playback/gstdecodebin3.c --- old/gst-plugins-base-1.18.3/gst/playback/gstdecodebin3.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst/playback/gstdecodebin3.c 2021-03-15 18:48:00.000000000 +0100 @@ -1453,7 +1453,7 @@ } SELECTION_LOCK (dbin); - if (dbin->collection && collection != dbin->collection) { + if (dbin->collection) { /* Replace collection message, we most likely aggregated it */ GstMessage *new_msg; new_msg = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst/playback/gsturidecodebin3.c new/gst-plugins-base-1.18.4/gst/playback/gsturidecodebin3.c --- old/gst-plugins-base-1.18.3/gst/playback/gsturidecodebin3.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst/playback/gsturidecodebin3.c 2021-03-15 18:48:00.000000000 +0100 @@ -1100,6 +1100,9 @@ GstURIDecodeBin3 *uridecodebin = (GstURIDecodeBin3 *) element; switch (transition) { + case GST_STATE_CHANGE_NULL_TO_READY: + g_object_set (uridecodebin->decodebin, "caps", uridecodebin->caps, NULL); + break; case GST_STATE_CHANGE_READY_TO_PAUSED: ret = activate_next_play_item (uridecodebin); if (ret == GST_STATE_CHANGE_FAILURE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/audio/audio.c new/gst-plugins-base-1.18.4/gst-libs/gst/audio/audio.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/audio/audio.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/audio/audio.c 2021-03-15 18:48:00.000000000 +0100 @@ -290,6 +290,10 @@ if (samples == orig_samples) return buffer; + GST_DEBUG ("Truncating %" G_GSIZE_FORMAT " to %" G_GSIZE_FORMAT + " (trim start %" G_GSIZE_FORMAT ", end %" G_GSIZE_FORMAT ")", + orig_samples, samples, trim, orig_samples - trim - samples); + if (!meta || meta->info.layout == GST_AUDIO_LAYOUT_INTERLEAVED) { /* interleaved */ ret = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, trim * bpf, @@ -301,7 +305,7 @@ } else { /* non-interleaved */ ret = gst_buffer_make_writable (buffer); - meta = gst_buffer_get_audio_meta (buffer); + meta = gst_buffer_get_audio_meta (ret); meta->samples = samples; for (i = 0; i < meta->info.channels; i++) { meta->offsets[i] += trim * bpf / meta->info.channels; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/audio/gstaudioaggregator.c new/gst-plugins-base-1.18.4/gst-libs/gst/audio/gstaudioaggregator.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/audio/gstaudioaggregator.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/audio/gstaudioaggregator.c 2021-03-15 18:48:00.000000000 +0100 @@ -100,8 +100,6 @@ guint position, size; /* position in the input buffer and size of the input buffer in number of samples */ - GstBuffer *input_buffer; - guint64 output_offset; /* Sample offset in output segment relative to srcpad.segment.start where the current position of this input_buffer would be placed. */ @@ -139,7 +137,6 @@ GstAudioAggregatorPad *pad = (GstAudioAggregatorPad *) object; gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); G_OBJECT_CLASS (gst_audio_aggregator_pad_parent_class)->finalize (object); } @@ -162,7 +159,6 @@ gst_audio_info_init (&pad->info); pad->priv->buffer = NULL; - pad->priv->input_buffer = NULL; pad->priv->position = 0; pad->priv->size = 0; pad->priv->output_offset = -1; @@ -182,7 +178,6 @@ pad->priv->output_offset = pad->priv->next_offset = -1; pad->priv->discont_time = GST_CLOCK_TIME_NONE; gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); GST_OBJECT_UNLOCK (aggpad); return GST_FLOW_OK; @@ -900,7 +895,8 @@ gboolean downstream_supports_rate = TRUE; if (!gst_audio_info_from_caps (&info, caps)) { - GST_WARNING_OBJECT (agg, "Rejecting invalid caps: %" GST_PTR_FORMAT, caps); + GST_WARNING_OBJECT (aaggpad, "Rejecting invalid caps: %" GST_PTR_FORMAT, + caps); return FALSE; } @@ -933,6 +929,10 @@ if (!downstream_supports_rate || (first_configured_pad && info.rate != first_configured_pad->info.rate)) { + GST_WARNING_OBJECT (aaggpad, + "Sample rate %d can't be configured (downstream supported: %d, configured rate: %d)", + info.rate, downstream_supports_rate, + first_configured_pad ? first_configured_pad->info.rate : 0); gst_pad_push_event (GST_PAD (aaggpad), gst_event_new_reconfigure ()); ret = FALSE; } else { @@ -1066,7 +1066,7 @@ if (aaggpad->priv->buffer) { GstBuffer *new_converted_buffer = gst_audio_aggregator_convert_buffer (aagg, GST_PAD (aaggpad), - old_info, new_info, aaggpad->priv->input_buffer); + old_info, new_info, aaggpad->priv->buffer); gst_buffer_replace (&aaggpad->priv->buffer, new_converted_buffer); gst_buffer_unref (new_converted_buffer); } @@ -1809,7 +1809,6 @@ pad->priv->position = pad->priv->size; gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); return FALSE; } @@ -1839,7 +1838,6 @@ if (pad->priv->position == pad->priv->size) { /* Buffer done, drop it */ gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); GST_LOG_OBJECT (pad, "Finished mixing buffer, waiting for next"); return FALSE; } @@ -2087,14 +2085,15 @@ GstAudioAggregatorPad *pad = (GstAudioAggregatorPad *) iter->data; GstAggregatorPad *aggpad = (GstAggregatorPad *) iter->data; gboolean pad_eos = gst_aggregator_pad_is_eos (aggpad); + GstBuffer *input_buffer; if (!pad_eos) is_eos = FALSE; - pad->priv->input_buffer = gst_aggregator_pad_peek_buffer (aggpad); + input_buffer = gst_aggregator_pad_peek_buffer (aggpad); GST_OBJECT_LOCK (pad); - if (!pad->priv->input_buffer) { + if (!input_buffer) { if (timeout) { if (pad->priv->output_offset < next_offset) { gint64 diff = next_offset - pad->priv->output_offset; @@ -2119,24 +2118,21 @@ if (GST_AUDIO_AGGREGATOR_PAD_GET_CLASS (pad)->convert_buffer) pad->priv->buffer = gst_audio_aggregator_convert_buffer - (aagg, GST_PAD (pad), &pad->info, &srcpad->info, - pad->priv->input_buffer); + (aagg, GST_PAD (pad), &pad->info, &srcpad->info, input_buffer); else - pad->priv->buffer = gst_buffer_ref (pad->priv->input_buffer); + pad->priv->buffer = gst_buffer_ref (input_buffer); if (!gst_audio_aggregator_fill_buffer (aagg, pad)) { gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); - pad->priv->buffer = NULL; + gst_buffer_unref (input_buffer); dropped = TRUE; GST_OBJECT_UNLOCK (pad); gst_aggregator_pad_drop_buffer (aggpad); continue; } - } else { - gst_buffer_unref (pad->priv->input_buffer); } + gst_buffer_unref (input_buffer); if (!pad->priv->buffer && !dropped && pad_eos) { GST_DEBUG_OBJECT (aggpad, "Pad is in EOS state"); @@ -2164,7 +2160,6 @@ GST_AUDIO_INFO_RATE (&srcpad->info))), pad->priv->buffer); /* Buffer done, drop it */ gst_buffer_replace (&pad->priv->buffer, NULL); - gst_buffer_replace (&pad->priv->input_buffer, NULL); dropped = TRUE; GST_OBJECT_UNLOCK (pad); gst_aggregator_pad_drop_buffer (aggpad); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/rtsp/gstrtspconnection.c new/gst-plugins-base-1.18.4/gst-libs/gst/rtsp/gstrtspconnection.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/rtsp/gstrtspconnection.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/rtsp/gstrtspconnection.c 2021-03-15 18:48:00.000000000 +0100 @@ -1905,7 +1905,7 @@ memset (&serialized_messages[i], 0, sizeof (serialized_messages[i])); serialized_messages[i].data = (guint8 *) base64_buffer; - serialized_messages[i].data_size = (out_buffer - base64_buffer) + 1; + serialized_messages[i].data_size = (out_buffer - base64_buffer); n_vectors++; } else { n_vectors++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/tag/id3v2frames.c new/gst-plugins-base-1.18.4/gst-libs/gst/tag/id3v2frames.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/tag/id3v2frames.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/tag/id3v2frames.c 2021-03-15 18:48:00.000000000 +0100 @@ -109,7 +109,7 @@ if (work->frame_flags & (ID3V2_FRAME_FORMAT_COMPRESSION | ID3V2_FRAME_FORMAT_DATA_LENGTH_INDICATOR)) { - if (work->hdr.frame_data_size <= 4) + if (frame_data_size <= 4) return FALSE; if (ID3V2_VER_MAJOR (work->hdr.version) == 3) { work->parse_size = GST_READ_UINT32_BE (frame_data); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/video/gstvideodecoder.c new/gst-plugins-base-1.18.4/gst-libs/gst/video/gstvideodecoder.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/video/gstvideodecoder.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/video/gstvideodecoder.c 2021-03-15 18:48:00.000000000 +0100 @@ -4258,8 +4258,19 @@ needs_reconfigure = gst_pad_check_reconfigure (decoder->srcpad); if (G_UNLIKELY (decoder->priv->output_state_changed || needs_reconfigure)) { if (!gst_video_decoder_negotiate_unlocked (decoder)) { - GST_DEBUG_OBJECT (decoder, "Failed to negotiate, fallback allocation"); gst_pad_mark_reconfigure (decoder->srcpad); + if (GST_PAD_IS_FLUSHING (decoder->srcpad)) { + GST_DEBUG_OBJECT (decoder, + "Failed to negotiate a pool: pad is flushing"); + goto flushing; + } else if (!decoder->priv->pool || decoder->priv->output_state_changed) { + GST_DEBUG_OBJECT (decoder, + "Failed to negotiate a pool and no previous pool to reuse"); + goto error; + } else { + GST_DEBUG_OBJECT (decoder, + "Failed to negotiate a pool, falling back to the previous pool"); + } } } @@ -4272,6 +4283,10 @@ return flow_ret; +flushing: + GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); + return GST_FLOW_FLUSHING; + error: GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); return GST_FLOW_ERROR; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-converter.c new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-converter.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-converter.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-converter.c 2021-03-15 18:48:00.000000000 +0100 @@ -2906,7 +2906,7 @@ gst_line_cache_get_lines (cache->prev, idx, out_line, start_line, n_lines); - if (convert->upsample) { + if (convert->upsample[idx]) { GST_DEBUG ("doing upsample %d-%d %p", start_line, start_line + n_lines - 1, lines[0]); gst_video_chroma_resample (convert->upsample[idx], lines, @@ -3107,7 +3107,7 @@ gst_line_cache_get_lines (cache->prev, idx, out_line, start_line, n_lines); - if (convert->downsample) { + if (convert->downsample[idx]) { GST_DEBUG ("downsample line %d %d-%d %p", in_line, start_line, start_line + n_lines - 1, lines[0]); gst_video_chroma_resample (convert->downsample[idx], lines, @@ -3130,7 +3130,7 @@ lines = gst_line_cache_get_lines (cache->prev, idx, out_line, in_line, 1); destline = lines[0]; - if (convert->dither) { + if (convert->dither[idx]) { GST_DEBUG ("Dither line %d %p", in_line, destline); gst_video_dither_line (convert->dither[idx], destline, 0, out_line, convert->out_width); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-info.c new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-info.c --- old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-info.c 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-info.c 2021-03-15 18:48:00.000000000 +0100 @@ -641,7 +641,7 @@ * Returns: a new #GstCaps containing the info of @info. */ GstCaps * -gst_video_info_to_caps (GstVideoInfo * info) +gst_video_info_to_caps (const GstVideoInfo * info) { GstCaps *caps; const gchar *format; @@ -686,14 +686,14 @@ if (GST_VIDEO_INFO_MULTIVIEW_MODE (info) != GST_VIDEO_MULTIVIEW_MODE_NONE) { const gchar *caps_str = NULL; + GstVideoMultiviewFlags multiview_flags = + GST_VIDEO_INFO_MULTIVIEW_FLAGS (info); /* If the half-aspect flag is set, applying it into the PAR of the * resulting caps now seems safe, and helps with automatic behaviour * in elements that aren't explicitly multiview aware */ - if (GST_VIDEO_INFO_MULTIVIEW_FLAGS (info) & - GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT) { - GST_VIDEO_INFO_MULTIVIEW_FLAGS (info) &= - ~GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT; + if (multiview_flags & GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT) { + multiview_flags &= ~GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT; switch (GST_VIDEO_INFO_MULTIVIEW_MODE (info)) { case GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE: case GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX: @@ -716,7 +716,7 @@ if (caps_str != NULL) { gst_caps_set_simple (caps, "multiview-mode", G_TYPE_STRING, caps_str, "multiview-flags", GST_TYPE_VIDEO_MULTIVIEW_FLAGSET, - GST_VIDEO_INFO_MULTIVIEW_FLAGS (info), GST_FLAG_SET_MASK_EXACT, NULL); + multiview_flags, GST_FLAG_SET_MASK_EXACT, NULL); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-info.h new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-info.h --- old/gst-plugins-base-1.18.3/gst-libs/gst/video/video-info.h 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-libs/gst/video/video-info.h 2021-03-15 18:48:00.000000000 +0100 @@ -452,7 +452,7 @@ gboolean gst_video_info_from_caps (GstVideoInfo *info, const GstCaps * caps); GST_VIDEO_API -GstCaps * gst_video_info_to_caps (GstVideoInfo *info); +GstCaps * gst_video_info_to_caps (const GstVideoInfo *info); GST_VIDEO_API gboolean gst_video_info_convert (GstVideoInfo *info, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/gst-plugins-base.doap new/gst-plugins-base-1.18.4/gst-plugins-base.doap --- old/gst-plugins-base-1.18.3/gst-plugins-base.doap 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/gst-plugins-base.doap 2021-03-15 18:48:00.000000000 +0100 @@ -36,6 +36,16 @@ <release> <Version> + <revision>1.18.4</revision> + <branch>1.18</branch> + <name></name> + <created>2021-03-15</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.18.4.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.18.3</revision> <branch>1.18</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/meson.build new/gst-plugins-base-1.18.4/meson.build --- old/gst-plugins-base-1.18.3/meson.build 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/meson.build 2021-03-15 18:48:00.000000000 +0100 @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.18.3', + version : '1.18.4', meson_version : '>= 0.48', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.18.3/tests/examples/overlay/meson.build new/gst-plugins-base-1.18.4/tests/examples/overlay/meson.build --- old/gst-plugins-base-1.18.3/tests/examples/overlay/meson.build 2021-01-13 22:07:13.000000000 +0100 +++ new/gst-plugins-base-1.18.4/tests/examples/overlay/meson.build 2021-03-15 18:48:00.000000000 +0100 @@ -9,7 +9,7 @@ if have_cxx # check for C++ support qt5_mod = import('qt5') - qt5widgets_dep = dependency('qt5', modules : ['Gui', 'Widgets'], + qt5widgets_dep = dependency('qt5', modules : ['Core', 'Gui', 'Widgets'], required: get_option('examples')) # FIXME Add a way to get that information out of the qt5 module