Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer for openSUSE:Factory checked in at 2022-02-09 20:38:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer (Old) and /work/SRC/openSUSE:Factory/.gstreamer.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer" Wed Feb 9 20:38:25 2022 rev:77 rq:952068 version:1.18.6 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes 2022-01-27 23:17:02.274948729 +0100 +++ /work/SRC/openSUSE:Factory/.gstreamer.new.1898/gstreamer.changes 2022-02-09 20:38:46.490314947 +0100 @@ -1,0 +2,16 @@ +Fri Feb 4 19:10:48 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 1.18.6: + + gstplugin: Fix for UWP build + + gst-ptp-helper: Do not disable multicast loopback + + concat: fix qos event handling + + pluginfeature: Fix object leak + + baseparse: fix invalid avg_bitrate after reset + + multiqueue: Fix query unref race on flush + + gst: Initialize optional event/message fields when parsing + + bitwriter: Fix the trailing bits lost when getting its data + + multiqueue: never consider a queue that is not waiting + + input-selector: Use proper segments when cleaning cached + buffers + +------------------------------------------------------------------- Old: ---- gstreamer-1.18.5.tar.xz New: ---- gstreamer-1.18.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer.spec ++++++ --- /var/tmp/diff_new_pack.3OvYTs/_old 2022-02-09 20:38:47.150316526 +0100 +++ /var/tmp/diff_new_pack.3OvYTs/_new 2022-02-09 20:38:47.154316535 +0100 @@ -19,7 +19,7 @@ %define gst_branch 1.0 Name: gstreamer -Version: 1.18.5 +Version: 1.18.6 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later ++++++ gstreamer-1.18.5.tar.xz -> gstreamer-1.18.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/.gitignore new/gstreamer-1.18.6/.gitignore --- old/gstreamer-1.18.5/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/gstreamer-1.18.6/.gitignore 2022-02-02 16:05:40.000000000 +0100 @@ -0,0 +1,15 @@ +*~ +*.bak + +Build +*.user +*.suo +*.ipch +*.sdf +*.opensdf +*.DS_Store + +# Meson +/build +/_build +/subprojects diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/.gitlab-ci.yml new/gstreamer-1.18.6/.gitlab-ci.yml --- old/gstreamer-1.18.5/.gitlab-ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/gstreamer-1.18.6/.gitlab-ci.yml 2022-02-02 16:05:40.000000000 +0100 @@ -0,0 +1 @@ +include: "https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/1.18/gitlab/ci_template.yml" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/ChangeLog new/gstreamer-1.18.6/ChangeLog --- old/gstreamer-1.18.5/ChangeLog 2021-09-08 21:01:48.703989700 +0200 +++ new/gstreamer-1.18.6/ChangeLog 2022-02-02 16:05:40.000000000 +0100 @@ -1,3 +1,154 @@ +=== release 1.18.6 === + +2022-02-02 15:05:38 +0000 Tim-Philipp M??ller <t...@centricular.com> + + * ChangeLog: + * NEWS: + * RELEASE: + * gstreamer.doap: + * meson.build: + Release 1.18.6 + +2022-01-26 02:46:49 +0900 Seungha Yang <seun...@centricular.com> + + * gst/gstplugin.c: + gstplugin: Fix for UWP build + SetThreadErrorMode() API is available on UWP but flag values + are desktop API only. Since error dialogs don't exist on UWP, + we don't need to suppress it + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1569> + +2022-01-19 20:58:36 +0530 Nirbheek Chauhan <nirbh...@centricular.com> + + * gst/gstplugin.c: + gstplugin: Better warnings on plugin load failure on Windows + It is an extremely common mistake on Windows to have incorrect PATH + values when loading a plugin, and the error from g_module_error() + (which just calls FormatMessageW()) is very confusing in this case: + The specified module could not be found. + https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-#ERROR_MOD_NOT_FOUND + It implies the plugin itself could not be found. The actual issue is + that a DLL dependency could not be found. We need to detect this case + and print a more useful error message. + We should still print the error fetched from FormatMessage() so that + people are able to google for it. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1589> + +2021-11-04 13:24:57 +0530 Nirbheek Chauhan <nirbh...@centricular.com> + + * libs/gst/helpers/gst-ptp-helper.c: + gst-ptp-helper: Do not disable multicast loopback + Otherwise we cannot run gst-ptp-helper if the PTP master is on the + same device. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1546> + +2021-10-20 11:20:13 +0200 Guillaume Desmottes <guillaume.desmot...@onestream.live> + + * plugins/elements/gstconcat.c: + concat: fix qos event handling + We were shadowing the sinkpad variable resulting in: + - the QoS event to be send to all sink pads instead of the active one + - the pad to be leaked + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1543> + +2022-01-14 04:45:08 +0900 Seungha Yang <seun...@centricular.com> + + * gst/gstpluginfeature.c: + pluginfeature: Fix object leak + Need to release GstPluginFeature object after use + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1534> + +2021-10-22 11:00:06 -0400 Pascal Hache <ha...@touchtunes.com> + + * libs/gst/base/gstbaseparse.c: + baseparse: fix invalid avg_bitrate after reset + gst_base_parse_reset() does not reset data_bytecount to 0, so + gst_base_parse_update_bitrates() uses a wrong value to calculate + the average bitrate on subsequent pipeline starts. This leads to an + excessive amount of "tag" events being pushed. These events include + very high "bitrate" values that diminish over time, and are produced + until the average bitrate is back to sane values. + Fixes #840 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1285> + +2021-10-04 13:49:44 +0200 Jan Alexander Steffens (heftig) <jan.steff...@ltnglobal.com> + + * plugins/elements/gstmultiqueue.c: + multiqueue: Fix query unref race on flush + If the query has already been destroyed at this point, GST_IS_QUERY will + read garbage, can return false and we will try to unref it again. + Instead, make note of whether the item is a query when we dequeue it. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1284> + +2021-09-20 13:12:12 +0300 Sebastian Dr??ge <sebast...@centricular.com> + + * gst/gstevent.c: + * gst/gstmessage.c: + gst: Initialize optional event/message fields when parsing + These might not exist inside the structure and then we would potentially + keep around uninitialized memory from the caller in the out parameter. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1273> + +2021-09-19 21:01:21 +0800 He Junyan <junyan...@intel.com> + + * tests/check/libs/bitwriter.c: + test: bitwriter: Add a test for reset_and_get_data when not byte unaligned. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272> + +2021-09-19 22:39:09 +0800 He Junyan <junyan...@intel.com> + + * libs/gst/base/gstbitwriter.c: + bitwriter: Fix a memory leak in reset_and_get_buffer. + We should record the ownership of the data before we reset the bitwriter. + Or we will always dup the buffer data and leak the memory. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272> + +2021-09-19 00:19:43 +0800 He Junyan <junyan...@intel.com> + + * libs/gst/base/gstbitwriter.c: + bitwriter: Fix the trailing bits lost when getting its data. + In reset_and_get_data and reset_and_get_buffer, it fails to include + the trailing bits less than 8. So, when the bit_size is not byte + aligned, the trailing bits are lost in the return buffer. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272> + +2021-09-10 01:43:18 +0200 Mathieu Duponchelle <math...@centricular.com> + + * plugins/elements/gstmultiqueue.c: + multiqueue: fix obsolete comment re initial flow status + The initial single queue srcresult is OK, it hasn't been + NOT_LINKED since 2007. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1271> + +2021-09-09 20:25:25 +0200 Mathieu Duponchelle <math...@centricular.com> + + * plugins/elements/gstmultiqueue.c: + multiqueue: never consider a queue that is not waiting + .. when computing the high id. + After a flush for instance, sq->srcresult is reset to OK, + yet it doesn't make sense to pick a non-existing position + id as the high id when a queue doesn't contain any items + in that situation either. + It is in any case completely OK to let the not-linked stream + get consumed without throttling at this stage, as any + first packet arriving on other single queues will get assigned + a higher position id. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1271> + +2021-07-23 16:20:20 +0200 Jan Alexander Steffens (heftig) <jan.steff...@ltnglobal.com> + + * plugins/elements/gstinputselector.c: + input-selector: Use proper segments when cleaning cached buffers + We need to use the segment associated with the cached buffer, not the + current segment of the pad, otherwise we miscalculate the running time + of cached buffers from before a segment change. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1270> + +2021-09-09 00:12:28 +0100 Tim-Philipp M??ller <t...@centricular.com> + + * meson.build: + Back to development + === release 1.18.5 === 2021-09-08 20:01:46 +0100 Tim-Philipp M??ller <t...@centricular.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/NEWS new/gstreamer-1.18.6/NEWS --- old/gstreamer-1.18.5/NEWS 2021-09-08 21:01:48.707990000 +0200 +++ new/gstreamer-1.18.6/NEWS 2022-02-02 16:05:40.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.5 and was released -on 8 September 2021. +The latest bug-fix release in the 1.18 series is 1.18.6 and was released +on 2 February 2022. See https://gstreamer.freedesktop.org/releases/1.18/ for the latest version of this document. -Last updated: Wednesday 8 September 2021, 11:00 UTC (log) +Last updated: Wednesday 2 February 2022, 11:30 UTC (log) Introduction @@ -2103,9 +2103,8 @@ Known Issues - GStreamer 1.18 versions <= 1.18.4 would fail to build on Linux with - Meson 0.58 due to an issue with the include directories. Either - apply the patch or build with an older Meson version (<= 0.57) until - there is a GStreamer 1.18.5 release that includes the fix. + Meson 0.58 due to an issue with the include directories. + GStreamer >= 1.18.5 includes a fix for this. Contributors @@ -3183,16 +3182,180 @@ - List of Merge Requests applied in 1.18.5 - List of Issues fixed in 1.18.5 +1.18.6 + +The sixth 1.18 bug-fix release (1.18.6) was released on 2 February 2022. + +This release only contains bugfixes and security fixes and it should be +safe to update from 1.18.x. + +Highlighted bugfixes in 1.18.6 + +- tagdemux: Fix crash when presented with malformed files (security + fix) +- video-converter: Fix broken gamma remap with high bitdepth YUV + output +- shout2send: Fix issues with libshout >= 2.4.2 +- mxfdemux: fix regression with VANC tracks that only contains packet + types we don???t handle +- Better plugin loading error reporting on Windows +- Fixes for deprecations in Python 3.10 +- build fixes, memory leak fixes, reliability fixes +- security fixes + +gstreamer + +- gstplugin: Fix for UWP build +- gstplugin: Better warnings on plugin load failure on Windows +- gst-ptp-helper: Do not disable multicast loopback +- concat: fix qos event handling +- pluginfeature: Fix object leak +- baseparse: fix invalid avg_bitrate after reset +- multiqueue: Fix query unref race on flush +- gst: Initialize optional event/message fields when parsing +- bitwriter: Fix the trailing bits lost when getting its data. +- multiqueue: never consider a queue that is not waiting +- input-selector: Use proper segments when cleaning cached buffers + +gst-plugins-base + +- tagdemux: Fix crash when presented with malformed files (security + fix) +- videoencoder: make sure the buffer is writable before modifying + metadata +- video-converter: Fix for broken gamma remap with high bitdepth YUV + output +- sdpmessage: fix mapping single char fmtp params +- oggdemux: fix a race in push mode when performing the duration seek +- uridecodebin: Fix critical warnings +- audio-converter: Fix resampling when there???s nothing to output +- tcp: fix build on Solaris +- uridecodebin3: Nullify current item after all play items are freed. +- audio-resampler: Fix segfault when we can???t output any frames +- urisourcebin: Handle sources with dynamic pads and pads already + present +- playbin2/3: autoplug/caps: don???t expand caps to ANY +- uridecodebin3/urisourcebin: Reusability fixes +- rtspconnection: Only reset timeout when socket is unused +- gstvideoaggregator.c: fix build with gcc 4.8 + +gst-plugins-good + +- rtspsrc: Fix critical while serializing timeout element message +- multifilesrc: fix caps leak +- shout2: Add compatibility for libshout >= 2.4.2 shout_open return + values +- v4l2: Update fmt if padded height is greater than fmt height +- v4l2bufferpool: set video alignment of video meta +- qtmux: fix deadlock in gst_qt_mux_prepare_moov_recovery +- matroska: Add support for muxing/demuxing ffv1 +- qtdemux: Try to build AAC codec-data whenever it???s possible + +gst-plugins-bad + +- interlace: Fix a double-unref on shutdown +- webrtcbin: Chain up to parent constructed method +- webrtc: fix log error message in function + gst_webrtc_bin_set_local_description +- mxfdemux: don???t error out if VANC track only contains packets we + don???t handle +- av1parser: Fix data type of film grain param +- assrender: Support RFC8081 mime types +- pitch: Specify layout as required for negotiation +- magicleap: update lumin_rt libraries names to the latest official + version +- codecs: h265decoder: Fix per-slice leak +- mpeg4videoparse: fix criticals trying to insert configs that don???t + exist yet +- webrtcbin: Always set SINK/SRC flags +- mpegtspacketizer: memcmp potentially seen_before data +- zxing: update to support version 1.1.1 + +gst-plugins-ugly + +- No changes + +gst-libav + +- avcodecmap: Add support for GBRA_10LE/BE + +gst-rtsp-server + +- rtsp-stream: fix get_rates raciness +- rtsp-media: Only unprepare a media if it was not already unpreparing + anyway +- rtsp-media: Unprepare suspended medias too +- rtsp-client: make sure sessmedia will not get freed while used +- rtsp-media: Also mark receive-only (RECORD) medias as prepared when + unsuspending +- rtsp-session: Don???t unref medias twice if it is removed inside??? +- examples: Fix leak in appsrc2 example + +gstreamer-vaapi + +- libs: video-format: Check if formats map is not NULL +- vaapidecode: Autogenerate caps template +- vaapipostproc: copy over metadata also when using system allocated + buffer + +gst-python + +- Avoid treating float as int (fix for Python 3.10) + +gst-editing-services + +- meson: Remove duplicate definition of ???examples??? option + +gst-devtools + +- No changes + +gst-integration-testsuites + +- No changes + +gst-build + +- env: Fix deprecations from python 3.10 +- Various fixes for macOS +- update FFmpeg wrap to 4.3.3 + +Cerbero build tool and packaging changes in 1.18.6 + +- Some fixes for Fedora 34 +- cerbero: Backport fix for removed loop param of PriorityQueue() +- cerbero: Fix support for Fedora 35 +- Add support for Visual Studio 2022 +- openssl.recipe: Fix crash on iOS TestFlight +- UnixBootstrapper: remove sudo as root user +- bzip2.recipe: bump version to 1.0.8 +- openssl.recipe: upgrade to version 1.1.1l + +Contributors to 1.18.6 + +Antonio Ospite, C??lestin Marot, Dave Pich??, Erlend Eriksen, Fabrice +Fontaine, Guillaume Desmottes, Haihua Hu, He Junyan, Jakub Adam, Jan +Alexander Steffens (heftig), Jan Schmidt, Jeremy Cline, Jordan Petridis, +Mathieu Duponchelle, Matthew Waters, Mengkejiergeli Ba, Michael Gruner, +Nirbheek Chauhan, Ognyan Tonchev, Pascal Hache, Rafa?? Dzi??giel, +Sebastian Dr??ge, Seungha Yang, St??phane Cerveau, Teng En Ung,Thibault +Saunier, Thomas Klausner, Tim-Philipp M??ller, Tobias Reineke, Tobias +Ronge, Tomasz Andrzejak, Trung Do, V??ctor Manuel J??quez Leal, Vivia +Nikolaidou, + +??? 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.6 + +- List of Merge Requests applied in 1.18.6 +- List of Issues fixed in 1.18.6 + Schedule for 1.20 -Our next major feature release will be 1.20, and 1.19 will be the -unstable development version leading up to the stable 1.20 release. The -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 -September/October 2021, with the first 1.20 stable release hopefully -towards the end of October 2021. +Our next major feature release will be 1.20, and will be released in +early February 2022. You can track its progress on the 1.20 Release +Notes page. 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/gstreamer-1.18.5/RELEASE new/gstreamer-1.18.6/RELEASE --- old/gstreamer-1.18.5/RELEASE 2021-09-08 21:01:48.707990000 +0200 +++ new/gstreamer-1.18.6/RELEASE 2022-02-02 16:05:40.000000000 +0100 @@ -1,4 +1,4 @@ -This is GStreamer core 1.18.5. +This is GStreamer core 1.18.6. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! @@ -82,7 +82,7 @@ For help and support, please subscribe to and send questions to the gstreamer-devel mailing list (see below for details). -There is also a #gstreamer IRC channel on the Freenode IRC network. +There is also a #gstreamer IRC channel on the OFTC IRC network. ==== Developers ==== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstevent.c new/gstreamer-1.18.6/gst/gstevent.c --- old/gstreamer-1.18.5/gst/gstevent.c 2021-09-08 21:01:48.727989700 +0200 +++ new/gstreamer-1.18.6/gst/gstevent.c 2022-02-02 16:05:40.000000000 +0100 @@ -1437,6 +1437,9 @@ g_return_if_fail (interval != NULL); g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_SEEK); + if (interval) + *interval = GST_CLOCK_TIME_NONE; + gst_structure_id_get (GST_EVENT_STRUCTURE (event), GST_QUARK (TRICKMODE_INTERVAL), GST_TYPE_CLOCK_TIME, interval, NULL); } @@ -1771,10 +1774,10 @@ g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START); if (stream) { + *stream = NULL; gst_structure_id_get (GST_EVENT_STRUCTURE (event), GST_QUARK (STREAM), GST_TYPE_STREAM, stream, NULL); } - } /** @@ -1809,6 +1812,7 @@ g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START); if (flags) { + *flags = 0; gst_structure_id_get (GST_EVENT_STRUCTURE (event), GST_QUARK (FLAGS), GST_TYPE_STREAM_FLAGS, flags, NULL); } @@ -1859,6 +1863,7 @@ FALSE); if (group_id) { + *group_id = 0; return gst_structure_id_get (GST_EVENT_STRUCTURE (event), GST_QUARK (GROUP_ID), G_TYPE_UINT, group_id, NULL); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstmessage.c new/gstreamer-1.18.6/gst/gstmessage.c --- old/gstreamer-1.18.5/gst/gstmessage.c 2021-09-08 21:01:48.731989600 +0200 +++ new/gstreamer-1.18.6/gst/gstmessage.c 2022-02-02 16:05:40.000000000 +0100 @@ -2470,6 +2470,8 @@ if (!group_id) return TRUE; + *group_id = 0; + structure = GST_MESSAGE_STRUCTURE (message); v = gst_structure_id_get_value (structure, GST_QUARK (GROUP_ID)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstplugin.c new/gstreamer-1.18.6/gst/gstplugin.c --- old/gstreamer-1.18.5/gst/gstplugin.c 2021-09-08 21:01:48.735989600 +0200 +++ new/gstreamer-1.18.6/gst/gstplugin.c 2022-02-02 16:05:40.000000000 +0100 @@ -727,6 +727,70 @@ return symname; } +#ifdef G_OS_WIN32 +/* + * It is an extremely common mistake on Windows to have incorrect PATH values + * when loading a plugin, and the error message is very confusing in this case: + * 'The specified module could not be found.' which implies the plugin itself + * could not be found. The actual issue is that a DLL dependency could not be + * found. We need to detect this case and print a more useful error message. + * + * Unfortunately, g_module_open() doesn't actually give us the GetLastError() + * code from LoadLibraryW() and only gives us a literal message from + * FormatMessageW(). We can't do a string comparison on that because it is + * locale-dependent. + * + * The only way out is for us to try loading the module ourselves on failure and + * get the error DWORD again from GetLastError(). + */ +static char * +get_better_module_load_error (const char *filename, const char *orig_err_msg) +{ + BOOL ret = 0; + DWORD mode; + wchar_t *wfilename; + HMODULE handle; + char *err_msg = NULL; + + wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); +#ifdef GST_WINAPI_ONLY_APP + handle = LoadPackagedLibrary (wfilename, 0); +#else + ret = SetThreadErrorMode (SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS, + &mode); + + handle = LoadLibraryW (wfilename); +#endif + g_free (wfilename); + + if (handle == NULL) { + DWORD err = GetLastError (); + char *win32_err_msg = g_win32_error_message (err); + if (err == ERROR_MOD_NOT_FOUND) { + err_msg = g_strdup_printf ("%s\nThis usually means Windows was unable " + "to find a DLL dependency of the plugin. Please check that PATH is " + "correct.\nYou can run 'dumpbin -dependents' (provided by the " + "Visual Studio developer prompt) to list the DLL deps of any DLL.\n" + "There are also some third-party GUIs to list and debug DLL " + "dependencies recursively.", win32_err_msg); + g_free (win32_err_msg); + } else { + err_msg = win32_err_msg; + } + } else { + err_msg = g_strdup_printf ("g_module_open() failed on %s with \"%s\" but " + "manual loading succeeded; this should be impossible! Please " + "report this as a GStreamer bug.", filename, orig_err_msg); + FreeLibrary (handle); + } + + if (ret > 0) + SetThreadErrorMode (mode, NULL); + + return err_msg; +} +#endif /* G_OS_WIN32 */ + /* Note: The return value is (transfer full) although we work with floating * references here. If a new plugin instance is created, it is always sinked * in the registry first and a new reference is returned @@ -802,15 +866,23 @@ module = g_module_open (filename, flags); if (module == NULL) { - GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s", - g_module_error ()); +#ifdef G_OS_WIN32 + /* flags are meaningless / ignored on Windows */ + char *err_msg = get_better_module_load_error (filename, g_module_error ()); +#else + const char *err_msg = g_module_error (); +#endif + GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s", err_msg); g_set_error (error, GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "Opening module failed: %s", - g_module_error ()); + err_msg); /* If we failed to open the shared object, then it's probably because a * plugin is linked against the wrong libraries. Print out an easy-to-see * message in this case. */ - g_warning ("Failed to load plugin '%s': %s", filename, g_module_error ()); + g_warning ("Failed to load plugin '%s': %s", filename, err_msg); +#ifdef G_OS_WIN32 + g_free (err_msg); +#endif goto return_error; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstpluginfeature.c new/gstreamer-1.18.6/gst/gstpluginfeature.c --- old/gstreamer-1.18.5/gst/gstpluginfeature.c 2021-09-08 21:01:48.735989600 +0200 +++ new/gstreamer-1.18.6/gst/gstpluginfeature.c 2022-02-02 16:05:40.000000000 +0100 @@ -489,6 +489,7 @@ if (feature) { gst_plugin_feature_set_rank (feature, rank); GST_DEBUG ("Update rank of plugin feature \"%s\" to %d", str, rank); + gst_object_unref (feature); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/gstreamer.doap new/gstreamer-1.18.6/gstreamer.doap --- old/gstreamer-1.18.5/gstreamer.doap 2021-09-08 21:01:48.743989500 +0200 +++ new/gstreamer-1.18.6/gstreamer.doap 2022-02-02 16:05:40.000000000 +0100 @@ -40,6 +40,16 @@ <release> <Version> + <revision>1.18.6</revision> + <branch>1.18</branch> + <name></name> + <created>2022-02-02</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.6.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.18.5</revision> <branch>1.18</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/base/gstbaseparse.c new/gstreamer-1.18.6/libs/gst/base/gstbaseparse.c --- old/gstreamer-1.18.5/libs/gst/base/gstbaseparse.c 2021-09-08 21:01:48.747989700 +0200 +++ new/gstreamer-1.18.6/libs/gst/base/gstbaseparse.c 2022-02-02 16:05:40.000000000 +0100 @@ -826,6 +826,7 @@ parse->priv->bitrate = 0; parse->priv->framecount = 0; parse->priv->bytecount = 0; + parse->priv->data_bytecount = 0; parse->priv->acc_duration = 0; parse->priv->first_frame_pts = GST_CLOCK_TIME_NONE; parse->priv->first_frame_dts = GST_CLOCK_TIME_NONE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/base/gstbitwriter.c new/gstreamer-1.18.6/libs/gst/base/gstbitwriter.c --- old/gstreamer-1.18.5/libs/gst/base/gstbitwriter.c 2021-09-08 21:01:48.747989700 +0200 +++ new/gstreamer-1.18.6/libs/gst/base/gstbitwriter.c 2022-02-02 16:05:40.000000000 +0100 @@ -200,7 +200,7 @@ data = bitwriter->data; if (bitwriter->owned) - data = g_memdup (data, bitwriter->bit_size >> 3); + data = g_memdup (data, GST_ROUND_UP_8 (bitwriter->bit_size) >> 3); gst_bit_writer_reset (bitwriter); return data; @@ -223,15 +223,18 @@ GstBuffer *buffer; gpointer data; gsize size; + gboolean owned; g_return_val_if_fail (bitwriter != NULL, NULL); - size = bitwriter->bit_size >> 3; + owned = bitwriter->owned; + + size = GST_ROUND_UP_8 (bitwriter->bit_size) >> 3; data = gst_bit_writer_reset_and_get_data (bitwriter); /* we cannot rely on buffers allocated externally, thus let's dup * the data */ - if (data && !bitwriter->owned) + if (data && !owned) data = g_memdup (data, size); buffer = gst_buffer_new (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/helpers/gst-ptp-helper.c new/gstreamer-1.18.6/libs/gst/helpers/gst-ptp-helper.c --- old/gstreamer-1.18.5/libs/gst/helpers/gst-ptp-helper.c 2021-09-08 21:01:48.755989600 +0200 +++ new/gstreamer-1.18.6/libs/gst/helpers/gst-ptp-helper.c 2022-02-02 16:05:40.000000000 +0100 @@ -226,7 +226,6 @@ if (!socket_event) g_error ("Couldn't create event socket: %s", err->message); g_clear_error (&err); - g_socket_set_multicast_loopback (socket_event, FALSE); socket_general = g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM, @@ -234,7 +233,6 @@ if (!socket_general) g_error ("Couldn't create general socket: %s", err->message); g_clear_error (&err); - g_socket_set_multicast_loopback (socket_general, FALSE); /* Bind sockets */ bind_addr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/meson.build new/gstreamer-1.18.6/meson.build --- old/gstreamer-1.18.5/meson.build 2021-09-08 21:01:48.759989500 +0200 +++ new/gstreamer-1.18.6/meson.build 2022-02-02 16:05:40.000000000 +0100 @@ -1,5 +1,5 @@ project('gstreamer', 'c', - version : '1.18.5', + version : '1.18.6', meson_version : '>= 0.48', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstconcat.c new/gstreamer-1.18.6/plugins/elements/gstconcat.c --- old/gstreamer-1.18.5/plugins/elements/gstconcat.c 2021-09-08 21:01:48.759989500 +0200 +++ new/gstreamer-1.18.6/plugins/elements/gstconcat.c 2022-02-02 16:05:40.000000000 +0100 @@ -756,14 +756,11 @@ break; } case GST_EVENT_QOS:{ - GstPad *sinkpad = NULL; - g_mutex_lock (&self->lock); if ((sinkpad = self->current_sinkpad)) gst_object_ref (sinkpad); g_mutex_unlock (&self->lock); - if (!sinkpad) { gst_event_replace (&event, NULL); ret = FALSE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstinputselector.c new/gstreamer-1.18.6/plugins/elements/gstinputselector.c --- old/gstreamer-1.18.5/plugins/elements/gstinputselector.c 2021-09-08 21:01:48.759989500 +0200 +++ new/gstreamer-1.18.6/plugins/elements/gstinputselector.c 2022-02-02 16:05:40.000000000 +0100 @@ -913,7 +913,6 @@ GST_DEBUG_OBJECT (sel, "Cleaning up old cached buffers"); for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = g_list_next (walk)) { GstSelectorPad *selpad; - GstSegment *seg; GstSelectorPadCachedBuffer *cached_buffer; GSList *maybe_remove; guint queue_position; @@ -922,13 +921,12 @@ if (!selpad->cached_buffers) continue; - seg = &selpad->segment; - maybe_remove = NULL; queue_position = 0; while ((cached_buffer = g_queue_peek_nth (selpad->cached_buffers, queue_position))) { GstBuffer *buffer = cached_buffer->buffer; + GstSegment *seg = &cached_buffer->segment; GstClockTime running_time; GSList *l; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstmultiqueue.c new/gstreamer-1.18.6/plugins/elements/gstmultiqueue.c --- old/gstreamer-1.18.5/plugins/elements/gstmultiqueue.c 2021-09-08 21:01:48.763989400 +0200 +++ new/gstreamer-1.18.6/plugins/elements/gstmultiqueue.c 2022-02-02 16:05:40.000000000 +0100 @@ -1384,7 +1384,7 @@ gst_segment_init (&sq->sink_segment, GST_FORMAT_TIME); gst_segment_init (&sq->src_segment, GST_FORMAT_TIME); sq->has_src_segment = FALSE; - /* All pads start off not-linked for a smooth kick-off */ + /* All pads start off OK for a smooth kick-off */ sq->srcresult = GST_FLOW_OK; sq->pushed = FALSE; sq->cur_time = 0; @@ -2087,7 +2087,7 @@ guint32 newid; GstFlowReturn result; GstClockTimeDiff next_time; - gboolean is_buffer; + gboolean is_buffer, is_query; gboolean do_update_buffering = FALSE; gboolean dropping = FALSE; GstPad *srcpad = NULL; @@ -2113,6 +2113,8 @@ item = (GstMultiQueueItem *) sitem; newid = item->posid; + is_query = item->is_query; + /* steal the object and destroy the item */ object = gst_multi_queue_item_steal_object (item); gst_multi_queue_item_destroy (item); @@ -2358,7 +2360,7 @@ out_flushing: { - if (object && !GST_IS_QUERY (object)) + if (object && !is_query) gst_mini_object_unref (object); GST_MULTI_QUEUE_MUTEX_LOCK (mq); @@ -2972,14 +2974,14 @@ GST_LOG_OBJECT (mq, "inspecting sq:%d , nextid:%d, oldid:%d, srcresult:%s", sq->id, sq->nextid, sq->oldid, gst_flow_get_name (sq->srcresult)); - if (sq->srcresult == GST_FLOW_NOT_LINKED) { - /* No need to consider queues which are not waiting */ - if (sq->nextid == 0) { - GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id); - gst_object_unref (srcpad); - continue; - } + /* No need to consider queues which are not waiting */ + if (sq->nextid == 0) { + GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id); + gst_object_unref (srcpad); + continue; + } + if (sq->srcresult == GST_FLOW_NOT_LINKED) { if (sq->nextid < lowest) lowest = sq->nextid; } else if (!GST_PAD_IS_EOS (srcpad) && sq->srcresult != GST_FLOW_EOS) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/po/gstreamer-1.0.pot new/gstreamer-1.18.6/po/gstreamer-1.0.pot --- old/gstreamer-1.18.5/po/gstreamer-1.0.pot 2021-09-08 21:01:49.247986000 +0200 +++ new/gstreamer-1.18.6/po/gstreamer-1.0.pot 2022-02-02 16:05:41.587391600 +0100 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gstreamer-1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-08 20:01+0100\n" +"POT-Creation-Date: 2022-02-02 15:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.18.5/tests/check/libs/bitwriter.c new/gstreamer-1.18.6/tests/check/libs/bitwriter.c --- old/gstreamer-1.18.5/tests/check/libs/bitwriter.c 2021-09-08 21:01:48.783989200 +0200 +++ new/gstreamer-1.18.6/tests/check/libs/bitwriter.c 2022-02-02 16:05:40.000000000 +0100 @@ -148,6 +148,66 @@ GST_END_TEST; +GST_START_TEST (test_reset_data_unaligned) +{ + GstBitWriter writer; + static guint8 sdata[] = { 0xff, 0xf1, 0xf2, 0x80 }; + guint8 *data, i; + GstBuffer *buf; + GstMapInfo info; + + gst_bit_writer_init_with_size (&writer, 32, TRUE); + fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048); + + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x2, 2)); + + fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048 - 26); + + data = gst_bit_writer_reset_and_get_data (&writer); + fail_unless (data != NULL); + + for (i = 0; i < 4; i++) + fail_unless (memcmp (&sdata[i], &data[i], 1) == 0); + + gst_bit_writer_init (&writer); + + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 3)); + + fail_unless_equals_int (gst_bit_writer_get_size (&writer), 30); + + buf = gst_bit_writer_reset_and_get_buffer (&writer); + fail_unless (buf != NULL); + fail_unless (gst_buffer_map (buf, &info, GST_MAP_READWRITE)); + fail_unless (info.data); + fail_unless_equals_int (info.size, 4); + + for (i = 0; i < 4; i++) + fail_unless (memcmp (&sdata[i], &info.data[i], 1) == 0); + + g_free (data); + gst_buffer_unmap (buf, &info); + gst_buffer_unref (buf); +} + +GST_END_TEST; static Suite * gst_bit_writer_suite (void) @@ -160,6 +220,7 @@ tcase_add_test (tc_chain, test_initialization); tcase_add_test (tc_chain, test_data); tcase_add_test (tc_chain, test_reset); + tcase_add_test (tc_chain, test_reset_data_unaligned); return s; }