Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer-plugins-good for openSUSE:Factory checked in at 2023-04-15 22:32:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old) and /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.19717 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-good" Sat Apr 15 22:32:11 2023 rev:91 rq:1079380 version:1.22.2 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes 2023-03-24 15:16:05.393519602 +0100 +++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.19717/gstreamer-plugins-good.changes 2023-04-15 22:32:13.553219025 +0200 @@ -1,0 +2,23 @@ +Wed Apr 12 12:14:15 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 1.22.2: + + osxvideosink: fix broken aspect ratio and frame drawing region + + qtdemux: Fix seek adjustment with SNAP_AFTER flag + + rtpopusdepay, matroskamux: Fix invalid rate while muxing Opus + in Matroska + + rtpmanager: twcc: Fix duplicate packet handling + + rtsp: url: fix incorrect request URI scheme for TLS transport + methods (regression) + + rtspsrc: + - Consider "451: Parameter Not Understood" when handling broken + control urls + - fix behavior change with URI protocols in OPTIONS requests + - Skip PTs with caps incompatible to the global caps + - rtpjpegdepay: fix logic error when checking if an end of + image (EOI) tag is present + + v4l2: + - Add support for YVU420M format + - mark JPEG as parsed +- Rebase patch with quilt. + +------------------------------------------------------------------- Old: ---- gst-plugins-good-1.22.1.tar.xz New: ---- gst-plugins-good-1.22.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-plugins-good.spec ++++++ --- /var/tmp/diff_new_pack.vToTc8/_old 2023-04-15 22:32:14.549224772 +0200 +++ /var/tmp/diff_new_pack.vToTc8/_new 2023-04-15 22:32:14.553224795 +0200 @@ -26,7 +26,7 @@ %define gst_branch 1.0 Name: gstreamer-plugins-good -Version: 1.22.1 +Version: 1.22.2 Release: 0 Summary: GStreamer Streaming-Media Framework Plug-Ins License: LGPL-2.1-or-later ++++++ gst-plugins-good-1.22.1.tar.xz -> gst-plugins-good-1.22.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/ChangeLog new/gst-plugins-good-1.22.2/ChangeLog --- old/gst-plugins-good-1.22.1/ChangeLog 2023-03-04 14:45:27.364387300 +0100 +++ new/gst-plugins-good-1.22.2/ChangeLog 2023-04-11 18:31:02.645229300 +0200 @@ -1,3 +1,150 @@ +=== release 1.22.2 === + +2023-04-11 17:29:28 +0100 Tim-Philipp Müller <t...@centricular.com> + + * NEWS: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: + * meson.build: + Release 1.22.2 + +2023-04-04 09:21:47 +0200 Edward Hervey <edw...@centricular.com> + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + twcc: Better handle duplicate packets + The previous code would only check if two packets in a row were duplicates. If + not (i.e. a packet is a duplicate of a packet received slightly before) the code + would generate completely bogus FCI because it assumes there were no duplicates + present in the array. + In order to be efficient, just store all received packets and remove the + duplicates just before the FCI is generated once the array of observations have + been sorted by seqnum. + Fixes TWCC usage with moderate to high packet duplication. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4378> + +2022-11-04 22:04:21 +0100 Alexande B <abobrikov...@gmail.com> + + * sys/osxvideo/cocoawindow.m: + osxvideosink: fix broken aspect ration and frame drawing region + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4346> + +2023-04-04 19:23:14 +0300 Sebastian Dröge <sebast...@centricular.com> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Skip PTs with caps incompatible to the global caps + Otherwise empty caps are created while all following code assumes that + the caps will have exactly one structure, and then run into assertions. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4343> + +2023-03-28 15:29:46 +0800 Shengqi Yu <shengqi...@mediatek.com> + + * docs/gst_plugins_cache.json: + * sys/v4l2/gstv4l2object.c: + v4l2object: Add support for YVU420M format + This is a multi-planar format with planes non contiguous in memory. It + is intended to be used only in drivers and applications that support the + multi-planar API. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4318> + +2023-03-23 16:40:54 +0000 Tim-Philipp Müller <t...@centricular.com> + + * gst/rtp/gstrtpjpegdepay.c: + rtpjpegdepay: fix logic error when checking if an EOI is present + We wouldn't add the missing EOI marker if the frame ended with + either 0xFF NN or 0xNN D9. + Fixes #2407 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4269> + +2023-03-20 16:35:45 +0100 Piotr BrzeziÅski <pi...@centricular.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Fix seek adjustment with SNAP_AFTER flag + With GST_SEEK_FLAG_SNAP_AFTER present, the previous version would + adjust seek time based on the keyframe farthest away from desired_time. + This was incorrect, because we always want the *earliest* suitable keyframe + to seek to, not the last one. + With this fix, in case of the SNAP_AFTER, we now look for the closest keyframe + that can be found after desired_time. Behaviour for SNAP_BEFORE should remain + unchanged. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4251> + +2023-01-31 16:02:03 +0100 Michael Tretter <m.tret...@pengutronix.de> + + * docs/gst_plugins_cache.json: + * sys/v4l2/gstv4l2object.c: + v4l2object: mark jpeg as parsed + Assuming that V4L2 CAPTURE devices always use one buffer per JPEG image, we can + always mark JPEGs provided by a V4L2 element as parsed. + The V4L2 elements require that JPEG images sent to V4L2 OUTPUT devices must + always be parsed. + This is necessary to link a V4L2 CAPTURE device with a V4L2 OUTPUT device + without explicitly marking the stream as parsed or adding a jpegparse into the + pipeline. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4247> + +2023-03-17 17:13:39 +0200 Sebastian Dröge <sebast...@centricular.com> + + * gst/matroska/matroska-read-common.c: + matroskademux: Make gst_byte_reader_get_data() usage less confusing + This is effectively the same behaviour but retrieving 0 bytes of data is + confusing to read. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221> + +2023-03-17 16:48:51 +0200 Sebastian Dröge <sebast...@centricular.com> + + * ext/flac/gstflacenc.c: + flacenc: Fix mapping of GStreamer image tag type to FLAC image tag type + These enums are not compatible so just casting them does not work. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221> + +2023-03-17 16:32:45 +0200 Sebastian Dröge <sebast...@centricular.com> + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * sys/oss/gstossaudio.c: + * sys/oss/gstosshelper.c: + plugins: Fix various trivial clang compiler warnings + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221> + +2023-03-10 13:10:16 -0500 Arun Raghavan <a...@asymptotic.io> + + * docs/gst_plugins_cache.json: + * gst/matroska/matroska-mux.c: + matroskamux: Set rate/channels in Opus template caps + For some reason these were missed, and if caps didn't have them, we would emit + an invalid Matroska file with a 0 value for Sampling Frequency or channels. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4172> + +2023-03-10 12:06:08 -0500 Arun Raghavan <a...@asymptotic.io> + + * gst/rtp/gstrtpopusdepay.c: + rtpopusdepay: Assume 48 kHz if sprop-maxcapturerate is missing + This matches 7587, section 6.1: + > sprop-maxcapturerate: a hint about the maximum input sampling rate + > [...] + > bandwidths (Table 1). By default, the sender is assumed to have + > no limitations, i.e., 48000. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4172> + +2023-03-06 19:56:08 +0000 Matt Feury <mattfe...@gmail.com> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Consider "451: Parameter Not Understood" when handling broken control urls + similar to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3854 + it seems that some implementations return this when + the server does not implement URL handling correctly + this fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2334 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4129> + +2023-03-04 16:13:04 +0000 Tim-Philipp Müller <t...@centricular.com> + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + === release 1.22.1 === 2023-03-04 13:42:32 +0000 Tim-Philipp Müller <t...@centricular.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/NEWS new/gst-plugins-good-1.22.2/NEWS --- old/gst-plugins-good-1.22.1/NEWS 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/NEWS 2023-04-11 18:29:28.000000000 +0200 @@ -2,13 +2,13 @@ GStreamer 1.22.0 was originally released on 23 January 2023. -The latest bug-fix release in the stable 1.22 series is 1.22.1 and was -released on 04 March 2023. +The latest bug-fix release in the stable 1.22 series is 1.22.2 and was +released on 11 April 2023. See https://gstreamer.freedesktop.org/releases/1.22/ for the latest version of this document. -Last updated: Monday 04 March 2023, 13:00 UTC (log) +Last updated: Tuesday 11 April 2023, 16:45 UTC (log) Introduction @@ -1454,6 +1454,200 @@ - List of Merge Requests applied in 1.22.1 - List of Issues fixed in 1.22.1 +1.22.2 + +The second 1.22 bug-fix release (1.22.2) was released on 11 April 2023. + +This release only contains bugfixes and it should be safe to update from +1.22.x. + +Highlighted bugfixes in 1.22.2 + +- avdec_h264: fix decoder deadlocks with FFmpeg 6.0 +- rtspsrc: fix regression with URI protocols in OPTIONS requests for + RTSP over TLS +- rtspsrc: improved control url handling compatibility for broken + servers +- decklink: fix 10 bit RGB (r210) format auto detection for capture + and fix playout if video caps are configured before audio caps +- d3d11videosink: Fix tearing in case of fullscreen mode +- playbin: fix deadlock when stopping stream with subtitles visible + (even more) +- typefinding: fix regression not detecting application/dash+xml in + some corner cases +- osxvideosink: fix broken aspect ratio and frame drawing region +- decodebin3, parsebin: Improve elementary stream handling when + decoders are not present and fix hang when removing a failing stream +- urisourcebin: Propagate sticky events from parsebin, so that the + STREAM_START event with the GstStream info is always available when + pads get exposed +- v4l2: Add support for YVU420M format; mark JPEG content as parsed +- h264decoder, h265decoder: DPB bumping process and latency reporting + fixes +- Opus: Fix reading of extended channel config in MPEG-TS and fix + missing sample rate when remuxing from RTP to Matroska +- zxing: add support for building against zxing-c++ 2.0 +- cerbero: Fix packaging of Rust plugins on Android; fix modern Gentoo + distro detection +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- datetime: Return G_MAXFLOAT instead of G_MAXDOUBLE for no timezone + offset +- inputselector: Wake up streaming thread before PLAYING_TO_PAUSED + transition +- tools: fix potential crash when passing command-line options on + Windows + +gst-plugins-base + +- alsasink: Fix for being stuck in stop_streaming_threads state +- decodebin3: fix hang when removing a failing stream +- gl: wayland: cleanup on close +- parsebin: Improve elementary stream handling +- playbin: fix deadlock when stopping stream with subtitles visible + even more +- sdp: Skip source-specific caps fields when creating an SDP media + from caps +- urisourcebin: Propagate sticky events from parsebin +- urisourcebin: Activate pad before transferring sticky events +- typefinding: fix failure to recognize application/dash+xml in some + cases + +gst-plugins-good + +- osxvideosink: fix broken aspect ratio and frame drawing region +- qtdemux: Fix seek adjustment with SNAP_AFTER flag +- rtpopusdepay, matroskamux: Fix invalid rate while muxing Opus in + Matroska +- rtpmanager: twcc: Fix duplicate packet handling +- rtsp: url: fix incorrect request URI scheme for TLS transport + methods (regression) +- rtspsrc: Consider â451: Parameter Not Understoodâ when handling + broken control urls +- rtspsrc: fix behavior change with URI protocols in OPTIONS requests +- rtspsrc: Skip PTs with caps incompatible to the global caps +- rtpjpegdepay: fix logic error when checking if an end of image (EOI) + tag is present +- v4l2: Add support for YVU420M format +- v4l2: mark JPEG as parsed + +gst-plugins-bad + +- cea708overlay: fix HCR interpretation +- d3d11bufferpool: Fix invalid access in debug print loop +- d3d11compositor: Fix composition error on release_pad() +- d3d11converter: Fix conversion backend selection +- d3d11videosink: Fix tearing in case of fullscreen mode - + d3d11bufferpool: Fix invalid access in debug print loop +- d3d11window: fix memory leak +- decklink: fix 10 bit RGB (r210) format auto detection +- decklinkaudiosink: Fix playback when video caps is configured before + audio +- decklinkvideosrc: RGB 4:4:4 doesnât work after GStreamer upgrade + (regression) +- decklinkvideosrc: unable to show HDMI stream that Blackmagicâs Media + Express is able to see +- debugqroverlay: fix string leak +- gtkwaylandsink: Destroy GstWlWindow when parent GtkWindow is + destroyed +- gtkwaylandsink: Fix crash when rendering after the window is closed +- ksvideo, directshow: Fix reference leaks in device providers +- h264decoder: Fix DPB bumping process +- h264decoder, h265decoder: Latency reporting related fixes +- h264parse: Validate VUI framerate +- jpegparse: reset parse state when the SOI is not the first marker +- nvencoder: Fix CQP option setting +- nvh264encoder: Fix template caps to include progressive mode as well +- openjpegdec: allow multithread decoding only in subframe mode +- tsdemux: Fix reading of extended Opus channel configuration +- vulkan: fix validation layer issues +- vulkanoverlaycompositor: fix potential use after free +- vulkanswapper: correctly handle force-aspect-ratio=false +- wasapi2: Fix potential crash on device activation failure +- webrtc: Fix segfault traversing ice transports +- webrtc: patch leak caused by early return +- zxing: add support for zxing-c++ 2.0 + +gst-plugins-ugly + +- No changes + +gst-libav + +- avdec_h264 pipeline freeze with FFmpeg6 +- avdeinterlace, avmux: fix element reference leak +- avviddec: Drop decoder stream lock when calling send_packet + +gst-rtsp-server + +- rtsp-server: fix deadlock on shutdown with non-live pipeline if + media isnât playing/prerolled yet and eos-shutdown is enabled for + the media + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- No changes + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- git: prevent CRLF line ending conversion for patches to fix pango + subproject patching issues on Windows + +Cerbero build tool and packaging changes in 1.22.2 + +- build: retry rust build on SIGBUS errors too +- Fix packaging of rust plugins on Android +- Modern Gentoo distro adaptation +- sbc: update to 2.0 +- speex: update to 1.2.1 + +Contributors to 1.22.2 + +Adrien De Coninck, Albert Sjölund, Alexande B, Antonio Rojas, Arun +Raghavan, Bart Van Severen, Carlo Cabrera, Colin Kinloch, Edward Hervey, +Guillaume Desmottes, Haihua Hu, He Junyan, Ilie Halip, Jordan Petridis, +Josef KoláÅ, Lily Foster, Mathieu Duponchelle, Matt Feury, Matthew +Waters, Maxim P. Dementyev, Michael Tretter, Nicolas Dufresne, Nirbheek +Chauhan, Piotr BrzeziÅski, Robert Rosengren, Rouven Czerwinski, +Sebastian Dröge, Seungha Yang, Shengqi Yu, Stéphane Cerveau, Talha Khan, +Thibault Saunier, Tim-Philipp Müller, VÃctor Manuel Jáquez Leal, Vivia +Nikolaidou, Wang Chuan, Wojciech Kapsa, + +⦠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.22.2 + +- List of Merge Requests applied in 1.22.2 +- List of Issues fixed in 1.22.2 + Schedule for 1.24 Our next major feature release will be 1.24, and 1.23 will be the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/RELEASE new/gst-plugins-good-1.22.2/RELEASE --- old/gst-plugins-good-1.22.1/RELEASE 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/RELEASE 2023-04-11 18:29:28.000000000 +0200 @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-good 1.22.1. +This is GStreamer gst-plugins-good 1.22.2. 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-good-1.22.1/docs/gst_plugins_cache.json new/gst-plugins-good-1.22.2/docs/gst_plugins_cache.json --- old/gst-plugins-good-1.22.1/docs/gst_plugins_cache.json 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/docs/gst_plugins_cache.json 2023-04-11 18:29:28.000000000 +0200 @@ -7027,7 +7027,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.22.1 FLV muxer", + "default": "GStreamer 1.22.2 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -7039,7 +7039,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.22.1 FLV muxer", + "default": "GStreamer 1.22.2 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -9546,7 +9546,7 @@ "long-name": "Matroska muxer", "pad-templates": { "audio_%%u": { - "caps": "audio/mpeg:\n mpegversion: 1\n layer: [ 1, 3 ]\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/mpeg:\n mpegversion: { (int)2, (int)4 }\n stream-format: raw\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-ac3:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-eac3:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-dts:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-vorbis:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-flac:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-opus:\naudio/x-speex:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-raw:\n format: { U8, S16BE, S16LE, S24BE, S24LE, S32BE, S32LE, F32LE, F64LE }\n layout: interleaved\n channels: [ 1, 214 7483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-tta:\n width: { (int)8, (int)16, (int)24 }\n channels: { (int)1, (int)2 }\n rate: [ 8000, 96000 ]\naudio/x-pn-realaudio:\n raversion: { (int)1, (int)2, (int)8 }\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-wma:\n wmaversion: [ 1, 3 ]\n block_align: [ 0, 65535 ]\n bitrate: [ 0, 524288 ]\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-alaw:\n channels: { (int)1, (int)2 }\n rate: [ 8000, 192000 ]\naudio/x-mulaw:\n channels: { (int)1, (int)2 }\n rate: [ 8000, 192000 ]\naudio/x-adpcm:\n layout: dvi\n block_align: [ 64, 8192 ]\n channels: { (int)1, (int)2 }\n rate: [ 8000, 96000 ]\naudio/G722:\n channels: 1\n rate: 16000\naudio/x-adpcm:\n layout: g726\n channels: 1\n rate: 8000\n", + "caps": "audio/mpeg:\n mpegversion: 1\n layer: [ 1, 3 ]\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/mpeg:\n mpegversion: { (int)2, (int)4 }\n stream-format: raw\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-ac3:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-eac3:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-dts:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-vorbis:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-flac:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-opus:\n channels: [ 1, 8 ]\n rate: { (int)8000, (int)16000, (int)24000, (int)32000, (int)48000 }\naudio/x-speex:\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-raw:\n format: { U8, S16BE, S16LE, S24BE, S24LE, S32BE, S32LE, F32LE, F64LE }\n layout: interleaved\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-tta:\n width: { (int)8, (int)16, (int)24 }\n channels: { (int)1, (int)2 }\n rate: [ 8000, 96000 ]\naudio/x-pn-realaudio:\n raversion: { (int)1, (int)2, (int)8 }\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-wma:\n wmaversion: [ 1, 3 ]\n block_align: [ 0, 65535 ]\n bitrate: [ 0, 524288 ]\n channels: [ 1, 2147483647 ]\n rate: [ 1, 2147483647 ]\naudio/x-alaw:\n channels: { (int)1, (int)2 }\n rate: [ 8000, 192000 ]\naudio/x-mulaw:\n channels: { (int)1, (int)2 }\n rate: [ 8000, 192000 ]\naudio/x-adpcm:\n layout: dvi\n block_align: [ 64, 8192 ]\n channels: { (int)1, (int)2 }\n rate: [ 8000, 96000 ]\naudio/G722:\n channels: 1\n rate: 16000\naudio/x-adpcm:\n layout: g726\n channels: 1\n rate: 8000\n", "direction": "sink", "presence": "request" }, @@ -21257,7 +21257,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.22.1", + "default": "GStreamer/1.22.2", "mutable": "null", "readable": true, "type": "gchararray", @@ -21816,7 +21816,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.22.1", + "default": "GStreamer 1.22.2", "mutable": "null", "readable": true, "type": "gchararray", @@ -23253,7 +23253,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer souphttpsrc 1.22.1 ", + "default": "GStreamer souphttpsrc 1.22.2 ", "mutable": "null", "readable": true, "type": "gchararray", @@ -24891,7 +24891,7 @@ "long-name": "Video (video4linux2) Sink", "pad-templates": { "sink": { - "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion: 4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2 }\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: { bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream: true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n stream-format: { (string)byte-stream, (string)avc }\n alignment: au\nvideo/x-h265:\n stream-format: byte-stream\n alignment: au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, N V12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: alternate\n", + "caps": "image/jpeg:\n parsed: true\nvideo/mpeg:\n mpegversion: 4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2 }\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: { bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream: true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n stream-format: { (string)byte-stream, (string)avc }\n alignment: au\nvideo/x-h265:\n stream-format: byte-stream\n alignment: au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YUY2, YVYU, UYVY, Y42B, Y41B, YU V9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, YV12, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, YV12, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: alternate\n", "direction": "sink", "presence": "always" } @@ -25199,7 +25199,7 @@ "long-name": "Video (video4linux2) Source", "pad-templates": { "src": { - "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion: 4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2 }\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: { bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream: true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n stream-format: { (string)byte-stream, (string)avc }\n alignment: au\nvideo/x-h265:\n stream-format: byte-stream\n alignment: au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, N V12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: alternate\n", + "caps": "image/jpeg:\n parsed: true\nvideo/mpeg:\n mpegversion: 4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2 }\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: { bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream: true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n stream-format: { (string)byte-stream, (string)avc }\n alignment: au\nvideo/x-h265:\n stream-format: byte-stream\n alignment: au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YUY2, YVYU, UYVY, Y42B, Y41B, YU V9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, YV12, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, YV12, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: alternate\n", "direction": "src", "presence": "always" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/ext/adaptivedemux2/gstadaptivedemux-stream.c new/gst-plugins-good-1.22.2/ext/adaptivedemux2/gstadaptivedemux-stream.c --- old/gst-plugins-good-1.22.1/ext/adaptivedemux2/gstadaptivedemux-stream.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/ext/adaptivedemux2/gstadaptivedemux-stream.c 2023-04-11 18:29:28.000000000 +0200 @@ -2564,7 +2564,7 @@ * fraction of the measured download rate */ target_download_rate = CLAMP (stream->current_download_rate, 0, - G_MAXUINT) * demux->bandwidth_target_ratio; + G_MAXUINT) * (gdouble) demux->bandwidth_target_ratio; GST_DEBUG_OBJECT (stream, "Bitrate after target ratio limit (%0.2f): %u", demux->bandwidth_target_ratio, target_download_rate); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/ext/flac/gstflacenc.c new/gst-plugins-good-1.22.2/ext/flac/gstflacenc.c --- old/gst-plugins-good-1.22.1/ext/flac/gstflacenc.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/ext/flac/gstflacenc.c 2023-04-11 18:29:28.000000000 +0200 @@ -687,7 +687,89 @@ gst_buffer_unmap (buffer, &map); GST_LOG_OBJECT (flacenc, "Setting picture type %d", image_type); - flacenc->meta[entries]->data.picture.type = image_type; + switch (image_type) { + case GST_TAG_IMAGE_TYPE_NONE: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER; + break; + case GST_TAG_IMAGE_TYPE_FRONT_COVER: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER; + break; + case GST_TAG_IMAGE_TYPE_BACK_COVER: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER; + break; + case GST_TAG_IMAGE_TYPE_LEAFLET_PAGE: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE; + break; + case GST_TAG_IMAGE_TYPE_MEDIUM: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA; + break; + case GST_TAG_IMAGE_TYPE_LEAD_ARTIST: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST; + break; + case GST_TAG_IMAGE_TYPE_ARTIST: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST; + break; + case GST_TAG_IMAGE_TYPE_CONDUCTOR: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR; + break; + case GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND; + break; + case GST_TAG_IMAGE_TYPE_COMPOSER: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER; + break; + case GST_TAG_IMAGE_TYPE_LYRICIST: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST; + break; + case GST_TAG_IMAGE_TYPE_RECORDING_LOCATION: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION; + break; + case GST_TAG_IMAGE_TYPE_DURING_RECORDING: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING; + break; + case GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE; + break; + case GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE; + break; + case GST_TAG_IMAGE_TYPE_FISH: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_FISH; + break; + case GST_TAG_IMAGE_TYPE_ILLUSTRATION: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION; + break; + case GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE; + break; + case GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE; + break; + case GST_TAG_IMAGE_TYPE_UNDEFINED: + default: + flacenc->meta[entries]->data.picture.type = + FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED; + break; + } if (width > 0 && height > 0) { flacenc->meta[entries]->data.picture.width = width; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/isomp4/qtdemux.c new/gst-plugins-good-1.22.2/gst/isomp4/qtdemux.c --- old/gst-plugins-good-1.22.1/gst/isomp4/qtdemux.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/isomp4/qtdemux.c 2023-04-11 18:29:28.000000000 +0200 @@ -1125,7 +1125,7 @@ gint64 min_byte_offset = -1; guint i; - min_offset = desired_time; + min_offset = next ? G_MAXUINT64 : desired_time; /* for each stream, find the index of the sample in the segment * and move back to the previous keyframe. */ @@ -1184,10 +1184,10 @@ index++; if (!empty_segment) { - /* find previous keyframe */ + /* find previous or next keyframe */ kindex = gst_qtdemux_find_keyframe (qtdemux, str, index, next); - /* we will settle for one before if none found after */ + /* if looking for next one, we will settle for one before if none found after */ if (next && kindex == -1) kindex = gst_qtdemux_find_keyframe (qtdemux, str, index, FALSE); @@ -1213,8 +1213,12 @@ /* this keyframe is inside the segment, convert back to * segment time */ seg_time = (media_time - seg->media_start) + seg->time; - if ((!next && (seg_time < min_offset)) || - (next && (seg_time > min_offset))) + + /* Adjust the offset based on the earliest suitable keyframe found, + * based on which GST_SEEK_FLAG_SNAP_* is present (indicated by 'next'). + * For SNAP_BEFORE we look for the earliest keyframe before desired_time, + * and in case of SNAP_AFTER - for the closest one after it. */ + if (seg_time < min_offset) min_offset = seg_time; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/matroska/matroska-mux.c new/gst-plugins-good-1.22.2/gst/matroska/matroska-mux.c --- old/gst-plugins-good-1.22.1/gst/matroska/matroska-mux.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/matroska/matroska-mux.c 2023-04-11 18:29:28.000000000 +0200 @@ -180,7 +180,9 @@ COMMON_AUDIO_CAPS "; " "audio/x-flac, " COMMON_AUDIO_CAPS "; " - "audio/x-opus; " + "audio/x-opus, " + "channels = (int) [ 1, 8 ], " + "rate = (int) { 8000, 16000, 24000, 32000, 48000 }; " "audio/x-speex, " COMMON_AUDIO_CAPS "; " "audio/x-raw, " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/matroska/matroska-read-common.c new/gst-plugins-good-1.22.2/gst/matroska/matroska-read-common.c --- old/gst-plugins-good-1.22.1/gst/matroska/matroska-read-common.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/matroska/matroska-read-common.c 2023-04-11 18:29:28.000000000 +0200 @@ -592,8 +592,9 @@ gst_structure_set (info_protect, "subsample_count", G_TYPE_UINT, 0, NULL); } - gst_byte_reader_get_data (&reader, 0, (const guint8 **) data_out); *size_out = gst_byte_reader_get_remaining (&reader); + gst_byte_reader_get_data (&reader, *size_out, (const guint8 **) data_out); + return TRUE; release_err: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/rtp/gstrtpjpegdepay.c new/gst-plugins-good-1.22.2/gst/rtp/gstrtpjpegdepay.c --- old/gst-plugins-good-1.22.1/gst/rtp/gstrtpjpegdepay.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/rtp/gstrtpjpegdepay.c 2023-04-11 18:29:28.000000000 +0200 @@ -705,7 +705,7 @@ * marker */ gst_adapter_copy (rtpjpegdepay->adapter, end, avail - 2, 2); - if (end[0] != 0xff && end[1] != 0xd9) { + if (GST_READ_UINT16_BE (end) != 0xffd9) { GST_DEBUG_OBJECT (rtpjpegdepay, "no EOI marker, adding one"); /* no EOI marker, add one */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/rtp/gstrtpopusdepay.c new/gst-plugins-good-1.22.2/gst/rtp/gstrtpopusdepay.c --- old/gst-plugins-good-1.22.1/gst/rtp/gstrtpopusdepay.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/rtp/gstrtpopusdepay.c 2023-04-11 18:29:28.000000000 +0200 @@ -100,6 +100,8 @@ GstStructure *s; gboolean ret; const gchar *sprop_maxcapturerate; + /* Default unless overridden by sprop_maxcapturerate */ + gint rate = 48000; srccaps = gst_caps_new_empty_simple ("audio/x-opus"); @@ -215,19 +217,22 @@ if ((sprop_maxcapturerate = gst_structure_get_string (s, "sprop-maxcapturerate"))) { - gulong rate; gchar *tailptr; + gulong tmp_rate; - rate = strtoul (sprop_maxcapturerate, &tailptr, 10); - if (rate > INT_MAX || *tailptr != '\0') { + tmp_rate = strtoul (sprop_maxcapturerate, &tailptr, 10); + if (tmp_rate > INT_MAX || *tailptr != '\0') { GST_WARNING_OBJECT (depayload, "Failed to parse sprop-maxcapturerate value '%s'", sprop_maxcapturerate); } else { - gst_caps_set_simple (srccaps, "rate", G_TYPE_INT, rate, NULL); + /* Valid rate from sprop, let's use it */ + rate = tmp_rate; } } + gst_caps_set_simple (srccaps, "rate", G_TYPE_INT, rate, NULL); + ret = gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (depayload), srccaps); GST_DEBUG_OBJECT (depayload, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/rtpmanager/rtptwcc.c new/gst-plugins-good-1.22.2/gst/rtpmanager/rtptwcc.c --- old/gst-plugins-good-1.22.1/gst/rtpmanager/rtptwcc.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/rtpmanager/rtptwcc.c 2023-04-11 18:29:28.000000000 +0200 @@ -598,6 +598,20 @@ g_array_sort (twcc->recv_packets, _twcc_seqnum_sort); + /* Quick scan to remove duplicates */ + prev = &g_array_index (twcc->recv_packets, RecvPacket, 0); + for (i = 1; i < twcc->recv_packets->len;) { + RecvPacket *cur = &g_array_index (twcc->recv_packets, RecvPacket, i); + + if (prev->seqnum == cur->seqnum) { + GST_DEBUG ("Removing duplicate packet #%u", cur->seqnum); + g_array_remove_index (twcc->recv_packets, i); + } else { + prev = cur; + i += 1; + } + } + /* get first and last packet */ first = &g_array_index (twcc->recv_packets, RecvPacket, 0); last = @@ -740,6 +754,11 @@ first = &g_array_index (twcc->recv_packets, RecvPacket, 0); packet_count = seqnum - first->seqnum + 1; + /* If there are a high number of duplicates, we can't use the following + * metrics */ + if (received_packets > packet_count) + return FALSE; + /* check if we lost half of the threshold */ lost_packets = packet_count - received_packets; if (received_packets >= 30 && lost_packets >= 60) @@ -787,17 +806,6 @@ return FALSE; } - if (twcc->recv_packets->len > 0) { - RecvPacket *last = &g_array_index (twcc->recv_packets, RecvPacket, - twcc->recv_packets->len - 1); - - diff = gst_rtp_buffer_compare_seqnum (last->seqnum, seqnum); - if (diff == 0) { - GST_INFO ("Received duplicate packet (%u), dropping", seqnum); - return FALSE; - } - } - /* store the packet for Transport-wide RTCP feedback message */ recv_packet_init (&packet, seqnum, pinfo); g_array_append_val (twcc->recv_packets, packet); @@ -817,6 +825,8 @@ pinfo->running_time + twcc->feedback_interval; if (pinfo->running_time >= twcc->next_feedback_send_time) { + GST_LOG ("Generating feedback : Exceeded feedback interval %" + GST_TIME_FORMAT, GST_TIME_ARGS (twcc->feedback_interval)); rtp_twcc_manager_create_feedback (twcc); send_feedback = TRUE; @@ -824,6 +834,8 @@ twcc->next_feedback_send_time += twcc->feedback_interval; } } else if (pinfo->marker || _many_packets_some_lost (twcc, seqnum)) { + GST_LOG ("Generating feedback because of %s", + pinfo->marker ? "marker packet" : "many packets some lost"); rtp_twcc_manager_create_feedback (twcc); send_feedback = TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst/rtsp/gstrtspsrc.c new/gst-plugins-good-1.22.2/gst/rtsp/gstrtspsrc.c --- old/gst-plugins-good-1.22.1/gst/rtsp/gstrtspsrc.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst/rtsp/gstrtspsrc.c 2023-04-11 18:29:28.000000000 +0200 @@ -2301,6 +2301,13 @@ outcaps = gst_caps_intersect (caps, global_caps); gst_caps_unref (caps); + if (gst_caps_is_empty (outcaps)) { + GST_WARNING_OBJECT (src, + " skipping pt %d with caps conflicting with the global caps", pt); + gst_caps_unref (outcaps); + continue; + } + /* the first pt will be the default */ if (stream->ptmap->len == 0) stream->default_pt = pt; @@ -7721,6 +7728,7 @@ case GST_RTSP_STS_BAD_REQUEST: case GST_RTSP_STS_NOT_FOUND: case GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE: + case GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD: /* There are various non-compliant servers that don't require control * URLs that are not resolved correctly but instead are just appended. * See e.g. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/gst-plugins-good.doap new/gst-plugins-good-1.22.2/gst-plugins-good.doap --- old/gst-plugins-good-1.22.1/gst-plugins-good.doap 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/gst-plugins-good.doap 2023-04-11 18:29:28.000000000 +0200 @@ -34,6 +34,16 @@ <release> <Version> + <revision>1.22.2</revision> + <branch>1.22</branch> + <name></name> + <created>2023-04-11</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.22.2.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.22.1</revision> <branch>1.22</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/meson.build new/gst-plugins-good-1.22.2/meson.build --- old/gst-plugins-good-1.22.1/meson.build 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/meson.build 2023-04-11 18:29:28.000000000 +0200 @@ -1,5 +1,5 @@ project('gst-plugins-good', 'c', - version : '1.22.1', + version : '1.22.2', meson_version : '>= 0.62', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/po/gst-plugins-good-1.0.pot new/gst-plugins-good-1.22.2/po/gst-plugins-good-1.0.pot --- old/gst-plugins-good-1.22.1/po/gst-plugins-good-1.0.pot 2023-03-04 14:45:27.124386000 +0100 +++ new/gst-plugins-good-1.22.2/po/gst-plugins-good-1.0.pot 2023-04-11 18:31:02.401225600 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good-1.22.1\n" +"Project-Id-Version: gst-plugins-good-1.22.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-04 13:45+0000\n" +"POT-Creation-Date: 2023-04-11 17:31+0100\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" @@ -99,49 +99,49 @@ msgid "This file contains no playable streams." msgstr "" -#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7367 gst/isomp4/qtdemux.c:7436 -#: gst/isomp4/qtdemux.c:7742 gst/isomp4/qtdemux.c:9135 +#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7371 gst/isomp4/qtdemux.c:7440 +#: gst/isomp4/qtdemux.c:7746 gst/isomp4/qtdemux.c:9139 msgid "This file is invalid and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:3041 +#: gst/isomp4/qtdemux.c:3045 msgid "Cannot play stream because it is encrypted with PlayReady DRM." msgstr "" -#: gst/isomp4/qtdemux.c:4360 gst/isomp4/qtdemux.c:8522 -#: gst/isomp4/qtdemux.c:8529 gst/isomp4/qtdemux.c:9837 -#: gst/isomp4/qtdemux.c:10279 gst/isomp4/qtdemux.c:10286 -#: gst/isomp4/qtdemux.c:13450 +#: gst/isomp4/qtdemux.c:4364 gst/isomp4/qtdemux.c:8526 +#: gst/isomp4/qtdemux.c:8533 gst/isomp4/qtdemux.c:9841 +#: gst/isomp4/qtdemux.c:10283 gst/isomp4/qtdemux.c:10290 +#: gst/isomp4/qtdemux.c:13454 msgid "This file is corrupt and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:4602 +#: gst/isomp4/qtdemux.c:4606 msgid "Invalid atom size." msgstr "" -#: gst/isomp4/qtdemux.c:4655 gst/isomp4/qtdemux.c:4662 +#: gst/isomp4/qtdemux.c:4659 gst/isomp4/qtdemux.c:4666 msgid "Cannot query file size" msgstr "" -#: gst/isomp4/qtdemux.c:4671 +#: gst/isomp4/qtdemux.c:4675 msgid "Cannot demux file" msgstr "" -#: gst/isomp4/qtdemux.c:4711 +#: gst/isomp4/qtdemux.c:4715 msgid "This file is incomplete and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:11420 +#: gst/isomp4/qtdemux.c:11424 msgid "The video in this file might not play correctly." msgstr "" -#: gst/rtsp/gstrtspsrc.c:7886 +#: gst/rtsp/gstrtspsrc.c:7894 msgid "" "No supported stream was found. You might need to install a GStreamer RTSP " "extension plugin for Real media streams." msgstr "" -#: gst/rtsp/gstrtspsrc.c:7891 +#: gst/rtsp/gstrtspsrc.c:7899 msgid "" "No supported stream was found. You might need to allow more transport " "protocols or may otherwise be missing the right GStreamer RTSP extension " @@ -213,104 +213,104 @@ msgid "Error reading %d bytes from device '%s'." msgstr "" -#: sys/v4l2/gstv4l2object.c:1241 +#: sys/v4l2/gstv4l2object.c:1242 #, c-format msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" -#: sys/v4l2/gstv4l2object.c:3192 +#: sys/v4l2/gstv4l2object.c:3197 #, c-format msgid "Could not map buffers from device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:3200 +#: sys/v4l2/gstv4l2object.c:3205 #, c-format msgid "The driver of device '%s' does not support the IO method %d" msgstr "" -#: sys/v4l2/gstv4l2object.c:3207 +#: sys/v4l2/gstv4l2object.c:3212 #, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" -#: sys/v4l2/gstv4l2object.c:4079 +#: sys/v4l2/gstv4l2object.c:4084 msgid "Invalid caps" msgstr "" -#: sys/v4l2/gstv4l2object.c:4086 sys/v4l2/gstv4l2object.c:4110 +#: sys/v4l2/gstv4l2object.c:4091 sys/v4l2/gstv4l2object.c:4115 #, c-format msgid "Device '%s' has no supported format" msgstr "" -#: sys/v4l2/gstv4l2object.c:4092 sys/v4l2/gstv4l2object.c:4116 +#: sys/v4l2/gstv4l2object.c:4097 sys/v4l2/gstv4l2object.c:4121 #, c-format msgid "Device '%s' failed during initialization" msgstr "" -#: sys/v4l2/gstv4l2object.c:4104 +#: sys/v4l2/gstv4l2object.c:4109 #, c-format msgid "Device '%s' is busy" msgstr "" -#: sys/v4l2/gstv4l2object.c:4127 +#: sys/v4l2/gstv4l2object.c:4132 #, c-format msgid "Device '%s' cannot capture at %dx%d" msgstr "" -#: sys/v4l2/gstv4l2object.c:4136 +#: sys/v4l2/gstv4l2object.c:4141 #, c-format msgid "Device '%s' cannot capture in the specified format" msgstr "" -#: sys/v4l2/gstv4l2object.c:4147 +#: sys/v4l2/gstv4l2object.c:4152 #, c-format msgid "Device '%s' does support non-contiguous planes" msgstr "" -#: sys/v4l2/gstv4l2object.c:4162 +#: sys/v4l2/gstv4l2object.c:4167 #, c-format msgid "Device '%s' does not support %s interlacing" msgstr "" -#: sys/v4l2/gstv4l2object.c:4176 +#: sys/v4l2/gstv4l2object.c:4181 #, c-format msgid "Device '%s' does not support %s colorimetry" msgstr "" -#: sys/v4l2/gstv4l2object.c:4188 +#: sys/v4l2/gstv4l2object.c:4193 #, c-format msgid "Could not get parameters on device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:4196 +#: sys/v4l2/gstv4l2object.c:4201 msgid "Video device did not accept new frame rate setting." msgstr "" -#: sys/v4l2/gstv4l2object.c:4337 +#: sys/v4l2/gstv4l2object.c:4342 msgid "Video device did not provide output format." msgstr "" -#: sys/v4l2/gstv4l2object.c:4343 +#: sys/v4l2/gstv4l2object.c:4348 msgid "Video device returned invalid dimensions." msgstr "" -#: sys/v4l2/gstv4l2object.c:4351 +#: sys/v4l2/gstv4l2object.c:4356 msgid "Video device uses an unsupported interlacing method." msgstr "" -#: sys/v4l2/gstv4l2object.c:4358 +#: sys/v4l2/gstv4l2object.c:4363 msgid "Video device uses an unsupported pixel format." msgstr "" -#: sys/v4l2/gstv4l2object.c:5256 +#: sys/v4l2/gstv4l2object.c:5261 msgid "Failed to configure internal buffer pool." msgstr "" -#: sys/v4l2/gstv4l2object.c:5262 +#: sys/v4l2/gstv4l2object.c:5267 msgid "Video device did not suggest any buffer size." msgstr "" -#: sys/v4l2/gstv4l2object.c:5268 +#: sys/v4l2/gstv4l2object.c:5273 msgid "No downstream pool to import from." msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/po/gst-plugins-good.pot new/gst-plugins-good-1.22.2/po/gst-plugins-good.pot --- old/gst-plugins-good-1.22.1/po/gst-plugins-good.pot 2023-03-04 14:45:27.124386000 +0100 +++ new/gst-plugins-good-1.22.2/po/gst-plugins-good.pot 2023-04-11 18:31:02.401225600 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good-1.22.1\n" +"Project-Id-Version: gst-plugins-good-1.22.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-04 13:45+0000\n" +"POT-Creation-Date: 2023-04-11 17:31+0100\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" @@ -99,49 +99,49 @@ msgid "This file contains no playable streams." msgstr "" -#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7367 gst/isomp4/qtdemux.c:7436 -#: gst/isomp4/qtdemux.c:7742 gst/isomp4/qtdemux.c:9135 +#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7371 gst/isomp4/qtdemux.c:7440 +#: gst/isomp4/qtdemux.c:7746 gst/isomp4/qtdemux.c:9139 msgid "This file is invalid and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:3041 +#: gst/isomp4/qtdemux.c:3045 msgid "Cannot play stream because it is encrypted with PlayReady DRM." msgstr "" -#: gst/isomp4/qtdemux.c:4360 gst/isomp4/qtdemux.c:8522 -#: gst/isomp4/qtdemux.c:8529 gst/isomp4/qtdemux.c:9837 -#: gst/isomp4/qtdemux.c:10279 gst/isomp4/qtdemux.c:10286 -#: gst/isomp4/qtdemux.c:13450 +#: gst/isomp4/qtdemux.c:4364 gst/isomp4/qtdemux.c:8526 +#: gst/isomp4/qtdemux.c:8533 gst/isomp4/qtdemux.c:9841 +#: gst/isomp4/qtdemux.c:10283 gst/isomp4/qtdemux.c:10290 +#: gst/isomp4/qtdemux.c:13454 msgid "This file is corrupt and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:4602 +#: gst/isomp4/qtdemux.c:4606 msgid "Invalid atom size." msgstr "" -#: gst/isomp4/qtdemux.c:4655 gst/isomp4/qtdemux.c:4662 +#: gst/isomp4/qtdemux.c:4659 gst/isomp4/qtdemux.c:4666 msgid "Cannot query file size" msgstr "" -#: gst/isomp4/qtdemux.c:4671 +#: gst/isomp4/qtdemux.c:4675 msgid "Cannot demux file" msgstr "" -#: gst/isomp4/qtdemux.c:4711 +#: gst/isomp4/qtdemux.c:4715 msgid "This file is incomplete and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:11420 +#: gst/isomp4/qtdemux.c:11424 msgid "The video in this file might not play correctly." msgstr "" -#: gst/rtsp/gstrtspsrc.c:7886 +#: gst/rtsp/gstrtspsrc.c:7894 msgid "" "No supported stream was found. You might need to install a GStreamer RTSP " "extension plugin for Real media streams." msgstr "" -#: gst/rtsp/gstrtspsrc.c:7891 +#: gst/rtsp/gstrtspsrc.c:7899 msgid "" "No supported stream was found. You might need to allow more transport " "protocols or may otherwise be missing the right GStreamer RTSP extension " @@ -213,104 +213,104 @@ msgid "Error reading %d bytes from device '%s'." msgstr "" -#: sys/v4l2/gstv4l2object.c:1241 +#: sys/v4l2/gstv4l2object.c:1242 #, c-format msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" -#: sys/v4l2/gstv4l2object.c:3192 +#: sys/v4l2/gstv4l2object.c:3197 #, c-format msgid "Could not map buffers from device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:3200 +#: sys/v4l2/gstv4l2object.c:3205 #, c-format msgid "The driver of device '%s' does not support the IO method %d" msgstr "" -#: sys/v4l2/gstv4l2object.c:3207 +#: sys/v4l2/gstv4l2object.c:3212 #, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" -#: sys/v4l2/gstv4l2object.c:4079 +#: sys/v4l2/gstv4l2object.c:4084 msgid "Invalid caps" msgstr "" -#: sys/v4l2/gstv4l2object.c:4086 sys/v4l2/gstv4l2object.c:4110 +#: sys/v4l2/gstv4l2object.c:4091 sys/v4l2/gstv4l2object.c:4115 #, c-format msgid "Device '%s' has no supported format" msgstr "" -#: sys/v4l2/gstv4l2object.c:4092 sys/v4l2/gstv4l2object.c:4116 +#: sys/v4l2/gstv4l2object.c:4097 sys/v4l2/gstv4l2object.c:4121 #, c-format msgid "Device '%s' failed during initialization" msgstr "" -#: sys/v4l2/gstv4l2object.c:4104 +#: sys/v4l2/gstv4l2object.c:4109 #, c-format msgid "Device '%s' is busy" msgstr "" -#: sys/v4l2/gstv4l2object.c:4127 +#: sys/v4l2/gstv4l2object.c:4132 #, c-format msgid "Device '%s' cannot capture at %dx%d" msgstr "" -#: sys/v4l2/gstv4l2object.c:4136 +#: sys/v4l2/gstv4l2object.c:4141 #, c-format msgid "Device '%s' cannot capture in the specified format" msgstr "" -#: sys/v4l2/gstv4l2object.c:4147 +#: sys/v4l2/gstv4l2object.c:4152 #, c-format msgid "Device '%s' does support non-contiguous planes" msgstr "" -#: sys/v4l2/gstv4l2object.c:4162 +#: sys/v4l2/gstv4l2object.c:4167 #, c-format msgid "Device '%s' does not support %s interlacing" msgstr "" -#: sys/v4l2/gstv4l2object.c:4176 +#: sys/v4l2/gstv4l2object.c:4181 #, c-format msgid "Device '%s' does not support %s colorimetry" msgstr "" -#: sys/v4l2/gstv4l2object.c:4188 +#: sys/v4l2/gstv4l2object.c:4193 #, c-format msgid "Could not get parameters on device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:4196 +#: sys/v4l2/gstv4l2object.c:4201 msgid "Video device did not accept new frame rate setting." msgstr "" -#: sys/v4l2/gstv4l2object.c:4337 +#: sys/v4l2/gstv4l2object.c:4342 msgid "Video device did not provide output format." msgstr "" -#: sys/v4l2/gstv4l2object.c:4343 +#: sys/v4l2/gstv4l2object.c:4348 msgid "Video device returned invalid dimensions." msgstr "" -#: sys/v4l2/gstv4l2object.c:4351 +#: sys/v4l2/gstv4l2object.c:4356 msgid "Video device uses an unsupported interlacing method." msgstr "" -#: sys/v4l2/gstv4l2object.c:4358 +#: sys/v4l2/gstv4l2object.c:4363 msgid "Video device uses an unsupported pixel format." msgstr "" -#: sys/v4l2/gstv4l2object.c:5256 +#: sys/v4l2/gstv4l2object.c:5261 msgid "Failed to configure internal buffer pool." msgstr "" -#: sys/v4l2/gstv4l2object.c:5262 +#: sys/v4l2/gstv4l2object.c:5267 msgid "Video device did not suggest any buffer size." msgstr "" -#: sys/v4l2/gstv4l2object.c:5268 +#: sys/v4l2/gstv4l2object.c:5273 msgid "No downstream pool to import from." msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/sys/oss/gstossaudio.c new/gst-plugins-good-1.22.2/sys/oss/gstossaudio.c --- old/gst-plugins-good-1.22.1/sys/oss/gstossaudio.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/sys/oss/gstossaudio.c 2023-04-11 18:29:28.000000000 +0200 @@ -32,10 +32,8 @@ static gboolean plugin_init (GstPlugin * plugin) { - gboolean ret = FALSE; - - ret |= GST_ELEMENT_REGISTER (osssrc, plugin); - ret |= GST_ELEMENT_REGISTER (osssink, plugin); + GST_ELEMENT_REGISTER (osssrc, plugin); + GST_ELEMENT_REGISTER (osssink, plugin); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/sys/oss/gstosshelper.c new/gst-plugins-good-1.22.2/sys/oss/gstosshelper.c --- old/gst-plugins-good-1.22.1/sys/oss/gstosshelper.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/sys/oss/gstosshelper.c 2023-04-11 18:29:28.000000000 +0200 @@ -202,7 +202,6 @@ GQueue *ranges; int exact_rates = 0; gboolean checking_exact_rates = TRUE; - int n_checks = 0; gboolean result = TRUE; ranges = g_queue_new (); @@ -210,7 +209,6 @@ probe->rates = g_array_new (FALSE, FALSE, sizeof (int)); probe->min = gst_oss_helper_rate_check_rate (probe, 1000); - n_checks++; probe->max = gst_oss_helper_rate_check_rate (probe, 100000); /* a little bug workaround */ { @@ -223,7 +221,6 @@ probe->max = max; } } - n_checks++; if (probe->min == -1 || probe->max == -1) { /* This is a workaround for drivers that return -EINVAL (or another * error) for rates outside of [8000,48000]. If this fails, the @@ -252,7 +249,6 @@ /* FIXME ioctl returned an error. do something */ GST_DEBUG ("unexpected check_rate error"); } - n_checks++; if (mid == mid_ret && checking_exact_rates) { int max_exact_matches = 20; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/sys/osxvideo/cocoawindow.m new/gst-plugins-good-1.22.2/sys/osxvideo/cocoawindow.m --- old/gst-plugins-good-1.22.1/sys/osxvideo/cocoawindow.m 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/sys/osxvideo/cocoawindow.m 2023-04-11 18:29:28.000000000 +0200 @@ -370,8 +370,8 @@ pi_texture = 0; data = nil; - width = frame.size.width; - height = frame.size.height; + width = frame.size.width * [[NSScreen mainScreen] backingScaleFactor]; + height = frame.size.height * [[NSScreen mainScreen] backingScaleFactor]; drawingBounds = NSMakeRect(0, 0, width, height); GST_LOG ("Width: %d Height: %d", width, height); @@ -395,7 +395,7 @@ - (void) reshape { NSRect bounds; gdouble frame_par, view_par; - gint view_height, view_width, c_height, c_width, c_x, c_y; + gint view_height, view_width, c_height, c_width, c_x, c_y, scale_factor; [super reshape]; @@ -410,6 +410,7 @@ bounds = [self bounds]; view_width = bounds.size.width; view_height = bounds.size.height; + scale_factor = [[NSScreen mainScreen] backingScaleFactor]; frame_par = (gdouble) width / height; view_par = (gdouble) view_width / view_height; @@ -433,8 +434,8 @@ c_y = (view_height - c_height) / 2; } - drawingBounds = NSMakeRect(c_x, c_y, c_width, c_height); - glViewport (c_x, c_y, (GLint) c_width, (GLint) c_height); + drawingBounds = NSMakeRect(c_x * scale_factor, c_y * scale_factor, + c_width * scale_factor, c_height * scale_factor); } - (void) initTextures { @@ -544,6 +545,9 @@ /* Black background */ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glViewport ((GLint) drawingBounds.origin.x, (GLint) drawingBounds.origin.y, + (GLint) drawingBounds.size.width, (GLint) drawingBounds.size.height); + if (!initDone) { [actualContext flushBuffer]; return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/sys/v4l2/gstv4l2object.c new/gst-plugins-good-1.22.2/sys/v4l2/gstv4l2object.c --- old/gst-plugins-good-1.22.1/sys/v4l2/gstv4l2object.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/sys/v4l2/gstv4l2object.c 2023-04-11 18:29:28.000000000 +0200 @@ -1093,6 +1093,7 @@ rank = YUV_BASE_RANK + 10; break; case V4L2_PIX_FMT_YVU420: /* YV12, 12 bits per pixel */ + case V4L2_PIX_FMT_YVU420M: rank = YUV_BASE_RANK + 6; break; case V4L2_PIX_FMT_UYVY: /* UYVY, 16 bits per pixel */ @@ -1375,6 +1376,7 @@ format = GST_VIDEO_FORMAT_YUY2; break; case V4L2_PIX_FMT_YVU420: + case V4L2_PIX_FMT_YVU420M: format = GST_VIDEO_FORMAT_YV12; break; case V4L2_PIX_FMT_UYVY: @@ -1453,7 +1455,8 @@ case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */ case V4L2_PIX_FMT_PJPG: /* Progressive-JPEG */ case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */ - structure = gst_structure_new_empty ("image/jpeg"); + structure = gst_structure_new ("image/jpeg", + "parsed", G_TYPE_BOOLEAN, TRUE, NULL); break; case V4L2_PIX_FMT_MPEG1: structure = gst_structure_new ("video/mpeg", @@ -1541,6 +1544,7 @@ case V4L2_PIX_FMT_YUV420M: case V4L2_PIX_FMT_YUYV: case V4L2_PIX_FMT_YVU420: + case V4L2_PIX_FMT_YVU420M: case V4L2_PIX_FMT_UYVY: case V4L2_PIX_FMT_YUV422P: case V4L2_PIX_FMT_YVYU: @@ -1794,6 +1798,7 @@ break; case GST_VIDEO_FORMAT_YV12: fourcc = V4L2_PIX_FMT_YVU420; + fourcc_nc = V4L2_PIX_FMT_YVU420M; break; case GST_VIDEO_FORMAT_Y41B: fourcc = V4L2_PIX_FMT_YUV411P; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-good-1.22.1/tests/check/elements/rtpsession.c new/gst-plugins-good-1.22.2/tests/check/elements/rtpsession.c --- old/gst-plugins-good-1.22.1/tests/check/elements/rtpsession.c 2023-03-04 14:42:32.000000000 +0100 +++ new/gst-plugins-good-1.22.2/tests/check/elements/rtpsession.c 2023-04-11 18:29:28.000000000 +0200 @@ -3466,7 +3466,7 @@ TWCCPacket packets[] = { {1, 4 * 32 * GST_MSECOND, FALSE}, {2, 5 * 32 * GST_MSECOND, FALSE}, - {2, 6 * 32 * GST_MSECOND, FALSE}, + {1, 6 * 32 * GST_MSECOND, FALSE}, {3, 7 * 32 * GST_MSECOND, TRUE}, }; ++++++ reduce-required-meson.patch ++++++ --- /var/tmp/diff_new_pack.vToTc8/_old 2023-04-15 22:32:15.553230564 +0200 +++ /var/tmp/diff_new_pack.vToTc8/_new 2023-04-15 22:32:15.557230587 +0200 @@ -1,10 +1,10 @@ -Index: gst-plugins-good-1.22.1/meson.build +Index: gst-plugins-good-1.22.2/meson.build =================================================================== ---- gst-plugins-good-1.22.1.orig/meson.build -+++ gst-plugins-good-1.22.1/meson.build +--- gst-plugins-good-1.22.2.orig/meson.build ++++ gst-plugins-good-1.22.2/meson.build @@ -1,6 +1,6 @@ project('gst-plugins-good', 'c', - version : '1.22.1', + version : '1.22.2', - meson_version : '>= 0.62', + meson_version : '>= 0.61', default_options : [ 'warning_level=1',