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 2024-01-05 21:40:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-good"
Fri Jan 5 21:40:06 2024 rev:99 rq:1136821 version:1.22.8
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes
2023-11-17 20:49:08.760276336 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.28375/gstreamer-plugins-good.changes
2024-01-05 21:40:15.139733011 +0100
@@ -1,0 +2,19 @@
+Thu Jan 4 07:54:19 UTC 2024 - Antonio Larrosa <[email protected]>
+
+- Update to version 1.22.8:
+ + dcaparse: keep upstream buffer meta
+ + rtpklvdepay: Recover after invalid fragmented KLV unit
+ + matroska-demux: fix accumulated base offset in segment seeks
+ + qtdemux: fix bug report URL
+ + qtdemux: Don't overflow sample index
+ + qtdemux: Fix reverse playback for pcm audio stream
+ + qtdemux: Ignore raw audio streams when adjusting seek
+ + qtdemux: Under-seeking to a key unit in certain (encoded by
+ Adobe products) ProRes movies (macOS x86_64 & arm64,
+ Windows x86_64, ...)
+ + rtpac3depay: should output audio/x-ac3 not audio/ac3
+ + rtp: Fix incorrect RTP channel order lookup by name
+ + v4l2bufferpool: add lock as atomic operation for seek
+- Rebase reduce-required-meson.patch
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-good-1.22.7.tar.xz
New:
----
gst-plugins-good-1.22.8.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-good.spec ++++++
--- /var/tmp/diff_new_pack.rLwqqu/_old 2024-01-05 21:40:15.987764019 +0100
+++ /var/tmp/diff_new_pack.rLwqqu/_new 2024-01-05 21:40:15.987764019 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gstreamer-plugins-good
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
%define gst_branch 1.0
Name: gstreamer-plugins-good
-Version: 1.22.7
+Version: 1.22.8
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
++++++ gst-plugins-good-1.22.7.tar.xz -> gst-plugins-good-1.22.8.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/ChangeLog
new/gst-plugins-good-1.22.8/ChangeLog
--- old/gst-plugins-good-1.22.7/ChangeLog 2023-11-13 12:07:52.976034200
+0100
+++ new/gst-plugins-good-1.22.8/ChangeLog 2023-12-18 13:13:04.650869600
+0100
@@ -1,3 +1,125 @@
+=== release 1.22.8 ===
+
+2023-12-18 12:09:37 +0000 Tim-Philipp Müller <[email protected]>
+
+ * NEWS:
+ * RELEASE:
+ * docs/gst_plugins_cache.json:
+ * gst-plugins-good.doap:
+ * meson.build:
+ Release 1.22.8
+
+2023-12-15 15:19:35 -0500 Arun Raghavan <[email protected]>
+
+ * gst/rtp/gstrtpchannels.c:
+ rtp: Fix incorrect RTP channel order lookup by name
+ The g_ascii_strcasecmp() logic is inverted, since it returns 0 on
equality.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5817>
+
+2023-04-29 16:20:13 +0100 Tim-Philipp Müller <[email protected]>
+
+ * gst/matroska/matroska-demux.c:
+ * tests/check/elements/matroskademux.c:
+ matroska-demux: fix accumulated base offset in segment seeks
+ When doing a segment seek, the base offset in the new segment
+ would be increased by segment.position which is basically the
+ timestamp of the last packet. This does not include the duration
+ of the last packet though, so might be slightly shorter than the
+ actual duration of the clip or the requested segment.
+ Increase the base offset by the segment duration instead when
+ accumulating segments, which is more correct as it doesn't cut
+ off the last frame and makes the effective loop segment duration
+ consistent with the actual duration returned from a duration
+ query.
+ In case a segment stop was specified it's also possible that
+ some data was sent beyond the stop that's necessary for decoding
+ so the base offset increment should be based on that then and
+ not on the timestamp of the last buffer pushed out.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5787>
+
+2023-12-05 09:25:22 +0100 Guillaume Desmottes
<[email protected]>
+
+ * gst/isomp4/qtdemux_tags.c:
+ * meson.build:
+ qtdemux: fix bug report URL
+ Using PACKAGE_BUGREPORT as in other modules.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5786>
+
+2023-12-01 14:51:49 +0900 Hosang Lee <[email protected]>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Don't overflow sample index
+ Don't reduce sample index if it is already at 0.
+ Assigning -1 to a guint32 variable causes unexpected behavior.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5751>
+
+2023-12-01 15:05:41 +0900 Hosang Lee <[email protected]>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Fix reverse playback for pcm audio stream
+ Some raw lpcm or adpcm may have larger sample sizes than the max
+ buffer size value set.
+ Trimming the buffer causes bogus size error on reverse playback.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5745>
+
+2023-04-21 09:58:36 +0800 jeri.li <[email protected]>
+
+ * sys/v4l2/gstv4l2bufferpool.c:
+ v4l2bufferpool: add lock as atomic operation for seek
+ When seek flush, gst v4l2 buffer pool flush is not atomic which will
+ lead double enqueue buffer (qbuf) issue, and v4l2 buffer pool qbuf is
+ also not atomic which will lead no free buffer found in the pool.
+ 1. add lock for calculate enqueue number in streamon function
+ 2. add lock for v4l2 capture end streamoff in pool flush function
+ 3. lock the whole funciton of v4l2 buffer pool qbuf, then the buffer
+ pool index and qbuf operation are atomic
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5695>
+
+2023-06-07 14:38:18 +0200 Robin Gustavsson <[email protected]>
+
+ * gst/rtp/gstrtpklvdepay.c:
+ * tests/check/elements/rtp-payloading.c:
+ rtpklvdepay: Recover after invalid fragmented KLV unit
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5686>
+
+2023-06-29 15:20:29 +0200 Piotr BrzeziÅski <[email protected]>
+
+ * gst/isomp4/qtdemux.c:
+ qtdemux: Ignore raw audio streams when adjusting seek
+ Because we treat raw audio chunks/samples as keyframes, they were
interfering
+ with seek time adjustment.
+ Became apparent when the accompanying video stream was I-frame only,
+ for example ProRes.
+ Since raw audio streams can be seeked freely, it's fine to just
ignore them here,
+ giving priority to the real keyframes in the video stream.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5674>
+
+2023-10-12 17:23:00 +0100 Tim-Philipp Müller <[email protected]>
+
+ * docs/gst_plugins_cache.json:
+ * gst/rtp/gstrtpac3depay.c:
+ rtpac3depay: should output audio/x-ac3 not audio/ac3
+ audio/x-ac3 is the canonical media format in GStreamer.
+ audio/ac3 is sometimes accepted as input (e.g. in rtpac3pay
+ or ac3parse), but shouldn't be output.
+ Fixes #3038.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5662>
+
+2023-11-14 15:36:34 +0900 Dongyun Seo <[email protected]>
+
+ * gst/audioparsers/gstdcaparse.c:
+ dcaparse: keep upstream buffer meta
+ Some audio decoders cannot decode DTS stream if there is no
+ valid timestamp. So, keep upstream buffer meta.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5664>
+
+2023-11-13 14:57:09 +0000 Tim-Philipp Müller <[email protected]>
+
+ * docs/gst_plugins_cache.json:
+ * meson.build:
+ Back to development
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5650>
+
=== release 1.22.7 ===
2023-11-13 11:04:22 +0000 Tim-Philipp Müller <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/NEWS
new/gst-plugins-good-1.22.8/NEWS
--- old/gst-plugins-good-1.22.7/NEWS 2023-11-13 12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/NEWS 2023-12-18 13:09:37.000000000 +0100
@@ -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.7 and was
-released on 13 November 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.8 and was
+released on 18 December 2023.
See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
version of this document.
-Last updated: Monday 13 November 2023, 10:00 UTC (log)
+Last updated: Monday 18 December 2023, 11:00 UTC (log)
Introduction
@@ -2582,6 +2582,160 @@
- List of Merge Requests applied in 1.22.7
- List of Issues fixed in 1.22.7
+1.22.8
+
+The eight 1.22 bug-fix release (1.22.8) was released on 18 December
+2023.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.22.x.
+
+Highlighted bugfixes in 1.22.8
+
+- Security fixes for the AV1 video codec parser
+- avdec video decoder: fix another possible deadlock with FFmpeg 6.1
+- qtdemux: reverse playback and seeking fixes for files with raw audio
+ streams
+- v4l2: fix ânewly allocated buffer ⦠is not freeâ warning log flood
+- GstPlay + GstPlayer library fixes
+- dtls: Fix build failure on Windows when compiling against OpenSSL
+ 3.2.0
+- d3d11screencapturesrc: Fix wrong color with HDR enabled
+- Cerbero build tool: More python 3.12 string escape warning fixes;
+ make sure to bundle build tools as well
+- various bug fixes, build fixes, memory leak fixes, and other
+ stability and reliability improvements
+
+gstreamer
+
+- buffer: Unref memories before metas
+- pad: Recheck pads when linking after temporary unlock
+- baseparse: Fixes to buffers extracted from adapter
+
+gst-plugins-base
+
+- appsrc: Fix flow return when buffer is dropped
+- audioringbuffer: Donât try to map MONO channel
+- encoding-target: Properly free when missing type field in
+ parse_encoding_profile
+- pbutils: Donât include default vp9 parameters in resulting codec
+ mime string
+- videorate: Donât forget last_ts on caps changes
+
+gst-plugins-good
+
+- dcaparse: keep upstream buffer meta
+- rtpklvdepay: Recover after invalid fragmented KLV unit
+- matroska-demux: fix accumulated base offset in segment seeks
+- qtdemux: fix bug report URL
+- qtdemux: Donât overflow sample index
+- qtdemux: Fix reverse playback for pcm audio stream
+- qtdemux: Ignore raw audio streams when adjusting seek
+- qtdemux: Under-seeking to a key unit in certain (encoded by Adobe
+ products) ProRes movies (macOS x86_64 & arm64, Windows x86_64, â¦)
+- rtpac3depay: should output audio/x-ac3 not audio/ac3
+- rtp: Fix incorrect RTP channel order lookup by name
+- v4l2bufferpool: add lock as atomic operation for seek
+
+gst-plugins-bad
+
+- aesenc: Fix IV length addition to output buffer length
+- av1parser: Fix array sizes in scalability structure
+- camerabin: Fix source updates with user filters
+- codecparsers: av1: Clip max tile rows and cols values
+- dtlscertificate: Define WINSOCKAPI before including windows.h
+- d3d11: fix building with address sanitizer
+- d3d11screencapturesrc: Fix wrong color with HDR enabled
+- h264decoder: Fix GstVideoCodecFrame leak
+- ladspa: Make RDF parsing truly optional
+- rtponviftimestamp: Fix drop-out-of-segment=false mode
+- qsvdecoder: Fix stream format detection
+- webrtcsdp: Remove fingerprint validation that doesnât make sense
+- GstPlay: Automatically flush the bus when disposing the signal
+ adapter
+- GstPlayer: Without dispatcher emit signals directly instead of via
+ the default main context
+
+gst-plugins-ugly
+
+- No changes
+
+gst-plugins-rs
+
+- threadshare: Fix a deadlock in used-socket notification
+- threadshare: Fix a typo while logging
+- webrtcsink: donât panic on failure to request pad from webrtcbin
+- ndi: Remove wrong Clone impl on RecvInstance
+- ndi: Donât mark private type as public
+- fallbacksrc: Fix timeout scheduling
+
+gst-libav
+
+- avviddec: Unlock stream lock while waiting for decoded frame. Fixes
+ potential deadlock
+- avviddec: Calculate latency only for fixed framerate
+
+gst-rtsp-server
+
+- No changes
+
+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
+
+- No changes
+
+Cerbero build tool and packaging changes in 1.22.8
+
+- cerbero: Fix some more python 3.12 string escape warnings
+- cerbero: Fix bundle-source not including build-tools recipes, fix
+ CalledProcessError handling
+- pango: Add Perl interpreter consistency check
+
+Contributors to 1.22.8
+
+Alessandro Bono, Alexander Slobodeniuk, Arun Raghavan, Benjamin
+Gaignard, Daniel Moberg, Dongyun Seo, Doug Nazar, Guillaume Desmottes,
+Hosang Lee, Jan Alexander Steffens (heftig), jeri.li, Jimmy Ohn, L. E.
+Segovia, Mathieu Duponchelle, Nicolas Dufresne, Nirbheek Chauhan,
+Olivier Crête, Philippe Normand, Piotr BrzeziÅski, Rabindra Harlalka,
+Robert Mader, Robin Gustavsson, Sebastian Dröge, Seungha Yang, Stefan
+Brüns, Tim-Philipp Müller, Xavier Claessens,
+
+⦠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.8
+
+- List of Merge Requests applied in 1.22.8
+- List of Issues fixed in 1.22.8
+
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.7/RELEASE
new/gst-plugins-good-1.22.8/RELEASE
--- old/gst-plugins-good-1.22.7/RELEASE 2023-11-13 12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/RELEASE 2023-12-18 13:09:37.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-good 1.22.7.
+This is GStreamer gst-plugins-good 1.22.8.
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.7/docs/gst_plugins_cache.json
new/gst-plugins-good-1.22.8/docs/gst_plugins_cache.json
--- old/gst-plugins-good-1.22.7/docs/gst_plugins_cache.json 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/docs/gst_plugins_cache.json 2023-12-18
13:09:37.000000000 +0100
@@ -7027,7 +7027,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer 1.22.7 FLV muxer",
+ "default": "GStreamer 1.22.8 FLV muxer",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -7039,7 +7039,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer 1.22.7 FLV muxer",
+ "default": "GStreamer 1.22.8 FLV muxer",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -13721,7 +13721,7 @@
"presence": "always"
},
"src": {
- "caps": "audio/ac3:\n",
+ "caps": "audio/x-ac3:\n",
"direction": "src",
"presence": "always"
}
@@ -21257,7 +21257,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer/1.22.7",
+ "default": "GStreamer/1.22.8",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -21816,7 +21816,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer 1.22.7",
+ "default": "GStreamer 1.22.8",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -23253,7 +23253,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer souphttpsrc 1.22.7 ",
+ "default": "GStreamer souphttpsrc 1.22.8 ",
"mutable": "null",
"readable": true,
"type": "gchararray",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-good-1.22.7/gst/audioparsers/gstdcaparse.c
new/gst-plugins-good-1.22.8/gst/audioparsers/gstdcaparse.c
--- old/gst-plugins-good-1.22.7/gst/audioparsers/gstdcaparse.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/audioparsers/gstdcaparse.c 2023-12-18
13:09:37.000000000 +0100
@@ -505,6 +505,7 @@
size = gst_buffer_get_size (buffer);
if (size >= 2) {
newbuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, 2, size - 2);
+ gst_buffer_copy_into (newbuf, buffer, GST_BUFFER_COPY_METADATA, 0, -1);
gst_buffer_unref (buffer);
ret = dcaparse->baseparse_chainfunc (pad, parent, newbuf);
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst/isomp4/qtdemux.c
new/gst-plugins-good-1.22.8/gst/isomp4/qtdemux.c
--- old/gst-plugins-good-1.22.7/gst/isomp4/qtdemux.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/isomp4/qtdemux.c 2023-12-18
13:09:37.000000000 +0100
@@ -1144,6 +1144,10 @@
if (CUR_STREAM (str)->sparse && !use_sparse)
continue;
+ /* raw audio streams can be ignored as we can seek anywhere within them */
+ if (str->subtype == FOURCC_soun && str->need_clip)
+ continue;
+
seg_idx = gst_qtdemux_find_segment (qtdemux, str, desired_time);
GST_DEBUG_OBJECT (qtdemux, "align segment %d", seg_idx);
@@ -5016,7 +5020,12 @@
}
/* Remember until where we want to go */
- str->to_sample = str->from_sample - 1;
+ if (str->from_sample == 0) {
+ GST_LOG_OBJECT (qtdemux, "already at sample 0");
+ str->to_sample = 0;
+ } else {
+ str->to_sample = str->from_sample - 1;
+ }
/* Define our time position */
target_ts =
str->samples[k_index].timestamp + str->samples[k_index].pts_offset;
@@ -15576,7 +15585,7 @@
if (g_str_has_prefix (name, "audio/x-raw")) {
stream->need_clip = TRUE;
stream->min_buffer_size = 1024 * entry->bytes_per_frame;
- stream->max_buffer_size = 4096 * entry->bytes_per_frame;
+ stream->max_buffer_size = entry->rate * entry->bytes_per_frame;
GST_DEBUG ("setting min/max buffer sizes to %d/%d",
stream->min_buffer_size,
stream->max_buffer_size);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst/isomp4/qtdemux_tags.c
new/gst-plugins-good-1.22.8/gst/isomp4/qtdemux_tags.c
--- old/gst-plugins-good-1.22.7/gst/isomp4/qtdemux_tags.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/isomp4/qtdemux_tags.c 2023-12-18
13:09:37.000000000 +0100
@@ -763,7 +763,8 @@
namestr_dbg = g_strndup (namestr, namesize);
GST_WARNING_OBJECT (demux, "This tag %s:%s type:%u is not mapped, "
- "file a bug at bugzilla.gnome.org", meanstr_dbg, namestr_dbg,
datatype);
+ "file a bug at %s", meanstr_dbg, namestr_dbg, datatype,
+ PACKAGE_BUGREPORT);
g_free (namestr_dbg);
g_free (meanstr_dbg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-good-1.22.7/gst/matroska/matroska-demux.c
new/gst-plugins-good-1.22.8/gst/matroska/matroska-demux.c
--- old/gst-plugins-good-1.22.7/gst/matroska/matroska-demux.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/matroska/matroska-demux.c 2023-12-18
13:09:37.000000000 +0100
@@ -6076,6 +6076,20 @@
if ((stop = demux->common.segment.stop) == -1)
stop = demux->last_stop_end;
+ /* segment.position will still be at the last timestamp and won't
always
+ * include the duration of the last packet. Expand that to the segment
+ * duration so that segment.base is increased correctly to include the
+ * length of the last packet when doing segment seeks. We need to do
+ * this before the segment-done event goes out so everything's ready
+ * for the next seek request coming in. */
+ if (GST_CLOCK_TIME_IS_VALID (stop)) {
+ GST_DEBUG_OBJECT (demux, "End of segment, updating segment.position "
+ "from %" GST_TIME_FORMAT " to stop %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (demux->common.segment.position),
+ GST_TIME_ARGS (stop));
+ demux->common.segment.position = stop;
+ }
+
GST_LOG_OBJECT (demux, "Sending segment done, at end of segment");
msg = gst_message_new_segment_done (GST_OBJECT (demux),
GST_FORMAT_TIME,
stop);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst/rtp/gstrtpac3depay.c
new/gst-plugins-good-1.22.8/gst/rtp/gstrtpac3depay.c
--- old/gst-plugins-good-1.22.7/gst/rtp/gstrtpac3depay.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/rtp/gstrtpac3depay.c 2023-12-18
13:09:37.000000000 +0100
@@ -52,7 +52,7 @@
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/ac3")
+ GST_STATIC_CAPS ("audio/x-ac3")
);
static GstStaticPadTemplate gst_rtp_ac3_depay_sink_template =
@@ -120,7 +120,7 @@
clock_rate = 90000; /* default */
depayload->clock_rate = clock_rate;
- srccaps = gst_caps_new_empty_simple ("audio/ac3");
+ srccaps = gst_caps_new_empty_simple ("audio/x-ac3");
res = gst_pad_set_caps (depayload->srcpad, srccaps);
gst_caps_unref (srccaps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst/rtp/gstrtpchannels.c
new/gst-plugins-good-1.22.8/gst/rtp/gstrtpchannels.c
--- old/gst-plugins-good-1.22.7/gst/rtp/gstrtpchannels.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/rtp/gstrtpchannels.c 2023-12-18
13:09:37.000000000 +0100
@@ -250,7 +250,7 @@
}
/* compare names */
- if (g_ascii_strcasecmp (channel_orders[i].name, order)) {
+ if (!g_ascii_strcasecmp (channel_orders[i].name, order)) {
res = &channel_orders[i];
break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst/rtp/gstrtpklvdepay.c
new/gst-plugins-good-1.22.8/gst/rtp/gstrtpklvdepay.c
--- old/gst-plugins-good-1.22.7/gst/rtp/gstrtpklvdepay.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst/rtp/gstrtpklvdepay.c 2023-12-18
13:09:37.000000000 +0100
@@ -330,8 +330,8 @@
}
}
- /* If this is the first packet and looks like a start, clear resync flag */
- if (klvdepay->resync && klvdepay->last_marker_seq == -1 && start)
+ /* If this looks like a start, clear the resync flag */
+ if (klvdepay->resync && start)
klvdepay->resync = FALSE;
if (marker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/gst-plugins-good.doap
new/gst-plugins-good-1.22.8/gst-plugins-good.doap
--- old/gst-plugins-good-1.22.7/gst-plugins-good.doap 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/gst-plugins-good.doap 2023-12-18
13:09:37.000000000 +0100
@@ -34,6 +34,16 @@
<release>
<Version>
+ <revision>1.22.8</revision>
+ <branch>1.22</branch>
+ <name></name>
+ <created>2023-12-18</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.22.8.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.22.7</revision>
<branch>1.22</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/meson.build
new/gst-plugins-good-1.22.8/meson.build
--- old/gst-plugins-good-1.22.7/meson.build 2023-11-13 12:04:22.000000000
+0100
+++ new/gst-plugins-good-1.22.8/meson.build 2023-12-18 13:09:37.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-plugins-good', 'c',
- version : '1.22.7',
+ version : '1.22.8',
meson_version : '>= 0.62',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
@@ -231,6 +231,7 @@
cdata.set_quoted('PACKAGE', 'gst-plugins-good')
cdata.set_quoted('GETTEXT_PACKAGE', 'gst-plugins-good-1.0')
cdata.set_quoted('LOCALEDIR', join_paths(get_option('prefix'),
get_option('localedir')))
+cdata.set_quoted('PACKAGE_BUGREPORT',
'https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new')
warning_flags = [
'-Wmissing-declarations',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/po/gst-plugins-good-1.0.pot
new/gst-plugins-good-1.22.8/po/gst-plugins-good-1.0.pot
--- old/gst-plugins-good-1.22.7/po/gst-plugins-good-1.0.pot 2023-11-13
12:07:52.684029800 +0100
+++ new/gst-plugins-good-1.22.8/po/gst-plugins-good-1.0.pot 2023-12-18
13:13:04.362865700 +0100
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good-1.22.7\n"
+"Project-Id-Version: gst-plugins-good-1.22.8\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-13 11:07+0000\n"
+"POT-Creation-Date: 2023-12-18 12:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -99,39 +99,39 @@
msgid "This file contains no playable streams."
msgstr ""
-#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7408 gst/isomp4/qtdemux.c:7477
-#: gst/isomp4/qtdemux.c:7783 gst/isomp4/qtdemux.c:9181
+#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7417 gst/isomp4/qtdemux.c:7486
+#: gst/isomp4/qtdemux.c:7792 gst/isomp4/qtdemux.c:9190
msgid "This file is invalid and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:3045
+#: gst/isomp4/qtdemux.c:3049
msgid "Cannot play stream because it is encrypted with PlayReady DRM."
msgstr ""
-#: gst/isomp4/qtdemux.c:4364 gst/isomp4/qtdemux.c:8568
-#: gst/isomp4/qtdemux.c:8575 gst/isomp4/qtdemux.c:9883
-#: gst/isomp4/qtdemux.c:10325 gst/isomp4/qtdemux.c:10332
-#: gst/isomp4/qtdemux.c:13572
+#: gst/isomp4/qtdemux.c:4368 gst/isomp4/qtdemux.c:8577
+#: gst/isomp4/qtdemux.c:8584 gst/isomp4/qtdemux.c:9892
+#: gst/isomp4/qtdemux.c:10334 gst/isomp4/qtdemux.c:10341
+#: gst/isomp4/qtdemux.c:13581
msgid "This file is corrupt and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:4606
+#: gst/isomp4/qtdemux.c:4610
msgid "Invalid atom size."
msgstr ""
-#: gst/isomp4/qtdemux.c:4659 gst/isomp4/qtdemux.c:4666
+#: gst/isomp4/qtdemux.c:4663 gst/isomp4/qtdemux.c:4670
msgid "Cannot query file size"
msgstr ""
-#: gst/isomp4/qtdemux.c:4675
+#: gst/isomp4/qtdemux.c:4679
msgid "Cannot demux file"
msgstr ""
-#: gst/isomp4/qtdemux.c:4715
+#: gst/isomp4/qtdemux.c:4719
msgid "This file is incomplete and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:11466
+#: gst/isomp4/qtdemux.c:11475
msgid "The video in this file might not play correctly."
msgstr ""
@@ -208,7 +208,7 @@
msgid "Raspberry Pi Camera Module"
msgstr ""
-#: sys/v4l2/gstv4l2bufferpool.c:1858
+#: sys/v4l2/gstv4l2bufferpool.c:1861
#, c-format
msgid "Error reading %d bytes from device '%s'."
msgstr ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/po/gst-plugins-good.pot
new/gst-plugins-good-1.22.8/po/gst-plugins-good.pot
--- old/gst-plugins-good-1.22.7/po/gst-plugins-good.pot 2023-11-13
12:07:52.684029800 +0100
+++ new/gst-plugins-good-1.22.8/po/gst-plugins-good.pot 2023-12-18
13:13:04.362865700 +0100
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-good-1.22.7\n"
+"Project-Id-Version: gst-plugins-good-1.22.8\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-13 11:07+0000\n"
+"POT-Creation-Date: 2023-12-18 12:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -99,39 +99,39 @@
msgid "This file contains no playable streams."
msgstr ""
-#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7408 gst/isomp4/qtdemux.c:7477
-#: gst/isomp4/qtdemux.c:7783 gst/isomp4/qtdemux.c:9181
+#: gst/isomp4/qtdemux.c:556 gst/isomp4/qtdemux.c:7417 gst/isomp4/qtdemux.c:7486
+#: gst/isomp4/qtdemux.c:7792 gst/isomp4/qtdemux.c:9190
msgid "This file is invalid and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:3045
+#: gst/isomp4/qtdemux.c:3049
msgid "Cannot play stream because it is encrypted with PlayReady DRM."
msgstr ""
-#: gst/isomp4/qtdemux.c:4364 gst/isomp4/qtdemux.c:8568
-#: gst/isomp4/qtdemux.c:8575 gst/isomp4/qtdemux.c:9883
-#: gst/isomp4/qtdemux.c:10325 gst/isomp4/qtdemux.c:10332
-#: gst/isomp4/qtdemux.c:13572
+#: gst/isomp4/qtdemux.c:4368 gst/isomp4/qtdemux.c:8577
+#: gst/isomp4/qtdemux.c:8584 gst/isomp4/qtdemux.c:9892
+#: gst/isomp4/qtdemux.c:10334 gst/isomp4/qtdemux.c:10341
+#: gst/isomp4/qtdemux.c:13581
msgid "This file is corrupt and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:4606
+#: gst/isomp4/qtdemux.c:4610
msgid "Invalid atom size."
msgstr ""
-#: gst/isomp4/qtdemux.c:4659 gst/isomp4/qtdemux.c:4666
+#: gst/isomp4/qtdemux.c:4663 gst/isomp4/qtdemux.c:4670
msgid "Cannot query file size"
msgstr ""
-#: gst/isomp4/qtdemux.c:4675
+#: gst/isomp4/qtdemux.c:4679
msgid "Cannot demux file"
msgstr ""
-#: gst/isomp4/qtdemux.c:4715
+#: gst/isomp4/qtdemux.c:4719
msgid "This file is incomplete and cannot be played."
msgstr ""
-#: gst/isomp4/qtdemux.c:11466
+#: gst/isomp4/qtdemux.c:11475
msgid "The video in this file might not play correctly."
msgstr ""
@@ -208,7 +208,7 @@
msgid "Raspberry Pi Camera Module"
msgstr ""
-#: sys/v4l2/gstv4l2bufferpool.c:1858
+#: sys/v4l2/gstv4l2bufferpool.c:1861
#, c-format
msgid "Error reading %d bytes from device '%s'."
msgstr ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-good-1.22.7/sys/v4l2/gstv4l2bufferpool.c
new/gst-plugins-good-1.22.8/sys/v4l2/gstv4l2bufferpool.c
--- old/gst-plugins-good-1.22.7/sys/v4l2/gstv4l2bufferpool.c 2023-11-13
12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/sys/v4l2/gstv4l2bufferpool.c 2023-12-18
13:09:37.000000000 +0100
@@ -682,9 +682,11 @@
guint num_queued;
guint i, n = 0;
+ GST_OBJECT_LOCK (pool);
num_queued = g_atomic_int_get (&pool->num_queued);
if (num_queued < pool->num_allocated)
n = pool->num_allocated - num_queued;
+ GST_OBJECT_UNLOCK (pool);
/* For captures, we need to enqueue buffers before we start streaming,
* so the driver don't underflow immediately. As we have put then back
@@ -1147,6 +1149,8 @@
gint old_buffer_state;
gint index;
+ GST_OBJECT_LOCK (pool);
+
index = group->buffer.index;
old_buffer_state =
@@ -1182,8 +1186,6 @@
}
}
- GST_OBJECT_LOCK (pool);
-
/* If the pool was orphaned, don't try to queue any returned buffers.
* This is done with the objet lock in order to synchronize with
* orphaning. */
@@ -1205,6 +1207,7 @@
already_queued:
{
GST_ERROR_OBJECT (pool, "the buffer %i was already queued", index);
+ GST_OBJECT_UNLOCK (pool);
return GST_FLOW_ERROR;
}
was_orphaned:
@@ -2281,7 +2284,9 @@
pool = GST_V4L2_BUFFER_POOL (bpool);
+ GST_OBJECT_LOCK (pool);
gst_v4l2_buffer_pool_streamoff (pool);
+ GST_OBJECT_UNLOCK (pool);
if (!V4L2_TYPE_IS_OUTPUT (pool->obj->type)) {
ret = gst_v4l2_buffer_pool_flush_events (v4l2object);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-good-1.22.7/tests/check/elements/matroskademux.c
new/gst-plugins-good-1.22.8/tests/check/elements/matroskademux.c
--- old/gst-plugins-good-1.22.7/tests/check/elements/matroskademux.c
2023-11-13 12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/tests/check/elements/matroskademux.c
2023-12-18 13:09:37.000000000 +0100
@@ -1,5 +1,5 @@
/* GStreamer unit test for matroskademux
- * Copyright (C) 2015 Tim-Philipp Müller <[email protected]>
+ * Copyright (C) 2015, 2023 Tim-Philipp Müller <[email protected]>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -307,6 +307,183 @@
GST_END_TEST;
+static void
+demux_pad_added_cb (GstElement * demux, GstPad * new_pad, gpointer user_data)
+{
+ GstElement *sink = GST_ELEMENT (user_data);
+
+ fail_unless (gst_element_link (demux, sink));
+}
+
+static const gint64 PINKNOISE_MKV_DURATION = 116099773;
+
+static void
+run_segment_looping_test (gint64 start, gint64 stop, gdouble rate)
+{
+ GstStateChangeReturn state_ret;
+ GstMessage *msg;
+ GstElement *src, *sink, *demux, *pipeline;
+ gboolean seek_ret;
+ GstBus *bus;
+ gchar *path;
+
+ g_assert (start >= 0);
+ g_assert (stop >= -1);
+ g_assert (rate > 0.0);
+
+ // only handle a rate for the middle segment case for now
+ g_assert (rate == 1.0 || stop != -1);
+
+ pipeline = gst_pipeline_new ("pipeline");
+ fail_unless (pipeline != NULL, "Failed to create pipeline!");
+
+ bus = gst_element_get_bus (pipeline);
+
+ src = gst_element_factory_make ("filesrc", "filesrc");
+ fail_unless (src != NULL, "Failed to create 'filesrc' element!");
+
+ demux = gst_element_factory_make ("matroskademux", "demux");
+ fail_unless (demux != NULL, "Failed to create matroskademux element");
+
+ sink = gst_element_factory_make ("fakesink", "fakesink");
+ fail_unless (sink != NULL, "Failed to create 'fakesink' element!");
+
+ gst_bin_add_many (GST_BIN (pipeline), src, demux, sink, NULL);
+
+ fail_unless (gst_element_link (src, demux));
+
+ g_signal_connect (demux, "pad-added", G_CALLBACK (demux_pad_added_cb), sink);
+
+ path = g_build_filename (GST_TEST_FILES_PATH, "pinknoise-vorbis.mkv", NULL);
+ GST_LOG ("reading file '%s'", path);
+ g_object_set (src, "location", path, NULL);
+
+ state_ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+ fail_unless (state_ret != GST_STATE_CHANGE_FAILURE);
+
+ if (state_ret == GST_STATE_CHANGE_ASYNC) {
+ GST_LOG ("waiting for pipeline to reach PAUSED state");
+ state_ret = gst_element_get_state (pipeline, NULL, NULL, -1);
+ fail_unless_equals_int (state_ret, GST_STATE_CHANGE_SUCCESS);
+ }
+
+ GST_LOG ("PAUSED, let's play a little..");
+ state_ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ fail_unless (state_ret != GST_STATE_CHANGE_FAILURE);
+
+ GST_LOG ("Send FLUSHING seek with SEGMENT flag set.. "
+ "(start=%" G_GINT64_FORMAT ", stop=%" G_GINT64_FORMAT ")", start, stop);
+
+ if (stop == -1) {
+ seek_ret = gst_element_seek_simple (pipeline, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT, start);
+ } else {
+ seek_ret = gst_element_seek (pipeline, rate, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT,
+ GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_SET, stop);
+ }
+ fail_unless (seek_ret == TRUE);
+
+ GST_LOG ("Waiting for pipeline to preroll again after flushing seek..");
+ state_ret = gst_element_get_state (pipeline, NULL, NULL, -1);
+ fail_unless_equals_int (state_ret, GST_STATE_CHANGE_SUCCESS);
+
+ {
+ GstFormat fmt = GST_FORMAT_UNDEFINED;
+ gint64 segment_end = 0;
+
+ GST_LOG ("Waiting for SEGMENT_DONE message..");
+ msg = gst_bus_timed_pop_filtered (bus, -1, GST_MESSAGE_SEGMENT_DONE);
+ fail_unless (msg != NULL);
+
+ gst_message_parse_segment_done (msg, &fmt, &segment_end);
+ fail_unless_equals_int (fmt, GST_FORMAT_TIME);
+ if (stop == -1) {
+ fail_unless_equals_int64 (segment_end, PINKNOISE_MKV_DURATION);
+ } else {
+ fail_unless_equals_int64 (segment_end, stop);
+ }
+ gst_clear_message (&msg);
+ }
+
+ GST_LOG ("Send non-FLUSHING seek to start new segment loop.. "
+ "(start=%" G_GINT64_FORMAT ", stop=%" G_GINT64_FORMAT ")", start, stop);
+
+ /* No segment flag this time, so will be expecting an EOS at the end */
+ if (stop == -1) {
+ seek_ret = gst_element_seek_simple (pipeline, GST_FORMAT_TIME, 0, start);
+ } else {
+ seek_ret = gst_element_seek (pipeline, rate, GST_FORMAT_TIME, 0,
+ GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_SET, stop);
+ }
+ fail_unless (seek_ret == TRUE);
+
+ GST_LOG ("Waiting for EOS message..");
+ msg = gst_bus_timed_pop_filtered (bus, -1, GST_MESSAGE_EOS);
+ fail_unless (msg != NULL);
+ gst_clear_message (&msg);
+
+ {
+ GstPad *pad = gst_element_get_static_pad (sink, "sink");
+ GstEvent *ev = gst_pad_get_sticky_event (pad, GST_EVENT_SEGMENT, 0);
+ const GstSegment *segment = NULL;
+
+ gst_event_parse_segment (ev, &segment);
+
+ GST_INFO ("segment %" GST_SEGMENT_FORMAT, segment);
+
+ fail_unless_equals_int64 (segment->start, start);
+ if (stop == -1) {
+ fail_unless_equals_int64 (segment->stop, PINKNOISE_MKV_DURATION);
+ fail_unless_equals_int64 (segment->duration, PINKNOISE_MKV_DURATION);
+ fail_unless_equals_int64 (segment->base, PINKNOISE_MKV_DURATION);
+ } else {
+ fail_unless_equals_int64 (segment->stop, stop);
+ fail_unless_equals_int64 (segment->duration, PINKNOISE_MKV_DURATION);
+ fail_unless_equals_int64 (segment->base, (stop - start) / rate);
+ }
+
+ gst_clear_event (&ev);
+ gst_clear_object (&pad);
+ }
+
+ fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
+ GST_STATE_CHANGE_SUCCESS);
+ gst_object_unref (pipeline);
+ gst_clear_object (&bus);
+
+ g_free (path);
+}
+
+/* Make sure segment seeks behave as expected, and the segment base offset
+ * is increased correctly by the clip duration rather than the last timestamp
+ * position. */
+GST_START_TEST (test_segment_looping)
+{
+ run_segment_looping_test (0, -1, 1.0);
+}
+
+GST_END_TEST;
+
+/* If we do a segment seek on a middle segment of the clip, we expect the
+ * base offset of the next segment to be the duration of our selected segment,
+ * not the duration of the entire clip, since we only played that much then. */
+GST_START_TEST (test_segment_looping_middle_segment)
+{
+ run_segment_looping_test (50 * GST_MSECOND, 100 * GST_MSECOND, 1.0);
+}
+
+GST_END_TEST;
+
+/* For positive non-1.0 rates the base offset of the next segment should be
+ * scaled accordingly, since it's in running time not stream time. */
+GST_START_TEST (test_segment_looping_middle_segment_with_rate)
+{
+ run_segment_looping_test (50 * GST_MSECOND, 100 * GST_MSECOND, 2.0);
+}
+
+GST_END_TEST;
+
static Suite *
matroskademux_suite (void)
{
@@ -316,6 +493,9 @@
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_sub_terminator);
tcase_add_test (tc_chain, test_toc_demux);
+ tcase_add_test (tc_chain, test_segment_looping);
+ tcase_add_test (tc_chain, test_segment_looping_middle_segment);
+ tcase_add_test (tc_chain, test_segment_looping_middle_segment_with_rate);
return s;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-good-1.22.7/tests/check/elements/rtp-payloading.c
new/gst-plugins-good-1.22.8/tests/check/elements/rtp-payloading.c
--- old/gst-plugins-good-1.22.7/tests/check/elements/rtp-payloading.c
2023-11-13 12:04:22.000000000 +0100
+++ new/gst-plugins-good-1.22.8/tests/check/elements/rtp-payloading.c
2023-12-18 13:09:37.000000000 +0100
@@ -1162,6 +1162,95 @@
GST_END_TEST;
+typedef struct
+{
+ gint buffer_count;
+ gint drop_index;
+} KlvDepayProbeData;
+
+static GstPadProbeReturn
+rtp_klv_do_packet_loss_depay_probe_cb (GstPad * pad, GstPadProbeInfo * info,
+ KlvDepayProbeData * data)
+{
+ GstPadProbeReturn ret = GST_PAD_PROBE_OK;
+
+ if (info->type & GST_PAD_PROBE_TYPE_BUFFER_LIST) {
+ GstBufferList *buffer_list = info->data;
+ gint length = gst_buffer_list_length (buffer_list);
+
+ if (data->drop_index >= 0) {
+ gint drop_offset = data->drop_index - data->buffer_count;
+
+ if (0 <= drop_offset && drop_offset < length)
+ gst_buffer_list_remove (buffer_list, drop_offset, 1);
+ }
+
+ data->buffer_count += length;
+ } else {
+ if (data->buffer_count == data->drop_index)
+ ret = GST_PAD_PROBE_DROP;
+ data->buffer_count++;
+ }
+
+ return ret;
+}
+
+GST_START_TEST (rtp_klv_fragmented_packet_loss)
+{
+ /* Number of KLV frames to push through the pipeline */
+ const guint FRAME_COUNT = 5;
+
+ /* Repeat frame data */
+ int frame_data_size = sizeof (rtp_KLV_frame_data);
+ guint8 *frame_data = malloc (FRAME_COUNT * sizeof (rtp_KLV_frame_data));
+ for (guint i = 0; i < FRAME_COUNT; i++)
+ memcpy (frame_data + i * frame_data_size, rtp_KLV_frame_data,
+ frame_data_size);
+
+ /* Create RTP pipeline. */
+ rtp_pipeline *p =
+ rtp_pipeline_create (frame_data, frame_data_size, FRAME_COUNT,
+ "meta/x-klv, parsed=(bool)true", "rtpklvpay", "rtpklvdepay");
+
+ if (p == NULL) {
+ return;
+ }
+
+ /* Force super-small mtu of 60 to fragment KLV unit (4 fragments per unit) */
+ g_object_set (p->rtppay, "mtu", 60, NULL);
+
+ /* Drop the 7:th fragment on the depayloader's sink pad */
+ KlvDepayProbeData sink_probe_data = {.buffer_count = 0,.drop_index = 7 };
+ GstPad *depay_sink = gst_element_get_static_pad (p->rtpdepay, "sink");
+ gst_pad_add_probe (depay_sink,
+ GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_BUFFER_LIST,
+ (GstPadProbeCallback) rtp_klv_do_packet_loss_depay_probe_cb,
+ &sink_probe_data, NULL);
+ gst_object_unref (depay_sink);
+
+ /* Count buffers on the depayloader's source pad */
+ KlvDepayProbeData src_probe_data = {.buffer_count = 0,.drop_index = -1 };
+ GstPad *depay_src = gst_element_get_static_pad (p->rtpdepay, "src");
+ gst_pad_add_probe (depay_src,
+ GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_BUFFER_LIST,
+ (GstPadProbeCallback) rtp_klv_do_packet_loss_depay_probe_cb,
+ &src_probe_data, NULL);
+ gst_object_unref (depay_src);
+
+ /* Run RTP pipeline. */
+ rtp_pipeline_run (p);
+
+ /* Destroy RTP pipeline. */
+ rtp_pipeline_destroy (p);
+
+ free (frame_data);
+
+ /* We should be able to decode all RTP buffers except for the second one */
+ g_assert_cmpuint (src_probe_data.buffer_count, ==, FRAME_COUNT - 1);
+}
+
+GST_END_TEST;
+
static const guint8 rtp_L16_frame_data[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -1801,6 +1890,7 @@
tcase_add_test (tc_chain, rtp_h265_list_gt_mtu_hvc1);
tcase_add_test (tc_chain, rtp_klv);
tcase_add_test (tc_chain, rtp_klv_fragmented);
+ tcase_add_test (tc_chain, rtp_klv_fragmented_packet_loss);
tcase_add_test (tc_chain, rtp_L16);
tcase_add_test (tc_chain, rtp_L24);
tcase_add_test (tc_chain, rtp_mp2t);
++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.rLwqqu/_old 2024-01-05 21:40:16.743791663 +0100
+++ /var/tmp/diff_new_pack.rLwqqu/_new 2024-01-05 21:40:16.743791663 +0100
@@ -1,10 +1,10 @@
-Index: gst-plugins-good-1.22.7/meson.build
+Index: gst-plugins-good-1.22.8/meson.build
===================================================================
---- gst-plugins-good-1.22.7.orig/meson.build
-+++ gst-plugins-good-1.22.7/meson.build
+--- gst-plugins-good-1.22.8.orig/meson.build
++++ gst-plugins-good-1.22.8/meson.build
@@ -1,6 +1,6 @@
project('gst-plugins-good', 'c',
- version : '1.22.7',
+ version : '1.22.8',
- meson_version : '>= 0.62',
+ meson_version : '>= 0.61',
default_options : [ 'warning_level=1',