Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-base for
openSUSE:Factory checked in at 2025-12-31 10:46:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base"
Wed Dec 31 10:46:24 2025 rev:126 rq:1324797 version:1.26.10
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
2025-12-10 15:29:41.960138926 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1928/gstreamer-plugins-base.changes
2025-12-31 10:46:30.064209106 +0100
@@ -1,0 +2,20 @@
+Tue Dec 30 09:37:34 UTC 2025 - Bjørn Lie <[email protected]>
+
+- Update to version 1.26.10:
+ + basetextoverlay: Don't negotiate if caps haven't changed
+ + codec-utils: Update mime codec strings
+ + fdmemory: Fix size calculation when sharing
+ + gl elements add a yellow bar on JPEGs with non-even heights
+ + glimagesink: Fix handling of odd height buffers
+ + glwindow_cocoa: fix window not closing (w/o user window handle)
+ + opusenc: Simplify Vorbis channel layout mapping code and fix
+ 7.1 layout & use surround multistream encoder
+ + parsebin: Improve debug logging
+ + playbin3: ensure GST_EVENT_SELECT_STREAMS event is sent to
+ collection source
+ + tagdemux: propagate seek event seqnum to upstream
+ + videodecoder: Don't assume the ALLOCATION query contains a pool
+ + videodecoder, videoaggregator: Fix handling of buffer pool
+ configuration failures
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-base-1.26.9.obscpio
New:
----
gst-plugins-base-1.26.10.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.836AKY/_old 2025-12-31 10:46:30.732236487 +0100
+++ /var/tmp/diff_new_pack.836AKY/_new 2025-12-31 10:46:30.732236487 +0100
@@ -20,7 +20,7 @@
%define gst_branch 1.0
%define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
Name: gstreamer-plugins-base
-Version: 1.26.9
+Version: 1.26.10
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: GPL-2.0-or-later AND LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.836AKY/_old 2025-12-31 10:46:30.776238288 +0100
+++ /var/tmp/diff_new_pack.836AKY/_new 2025-12-31 10:46:30.784238615 +0100
@@ -5,7 +5,7 @@
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
<param name="subdir">subprojects/gst-plugins-base</param>
<param name="filename">gst-plugins-base</param>
- <param name="revision">1.26.9</param>
+ <param name="revision">1.26.10</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">v?(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
++++++ gst-plugins-base-1.26.9.obscpio -> gst-plugins-base-1.26.10.obscpio
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/NEWS
new/gst-plugins-base-1.26.10/NEWS
--- old/gst-plugins-base-1.26.9/NEWS 2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/NEWS 2025-12-25 15:44:26.000000000 +0100
@@ -2,11 +2,11 @@
GStreamer 1.26.0 was originally released on 11 March 2025.
-The latest bug-fix release in the stable 1.26 series is 1.26.9 and was
released on 01 December 2025.
+The latest bug-fix release in the stable 1.26 series is 1.26.10 and was
released on 25 December 2025
See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of
this document.
-Last updated: Monday 01 December 2025, 17:00 UTC (log)
+Last updated: Thursday 25 December 2025, 15:00 UTC (log)
## Introduction
@@ -3120,6 +3120,191 @@
- List of Merge Requests applied in 1.26.9
- List of Issues fixed in 1.26.9
+1.26.10
+
+The tenth 1.26 bug-fix release (1.26.10) was released on 25 December 2025.
+
+This release only contains bugfixes and it should be safe to update from
1.26.x.
+
+Highlighted bugfixes in 1.26.10
+
+- curlhttpsrc fixes and improvements
+- decklinkvideosink: Fix frame completion callbacks for firmware 14.3+
+- flac: Fix 6.1 and 7.1 channel layouts and support encoding and decoding of
32-bit audio
+- glimagesink: Fix handling of odd height buffers
+- matroskademux: make maximum allowed block size large enough to support 4k
uncompressed video
+- mxf: Add support for custom Sony XDCAM video variant
+- opusenc: multichannel and surround sound handling improvements
+- playbin3: HLS/DASH stream selection handling improvements to fix disabling
and re-enabling of audio/video streams with
+ adaptivedemux2
+- qtmux: robust recording mode space left estimation fixes for streams that
start with a timestamp offset
+- splitmuxsrc seeking improvements
+- Support FLAC audio in DASH manifests
+- Python bindings: fix regression where buffers were no longer writable in
pad probe callbacks
+- cerbero: add python bindings for GstApp; Windows installer improvements
+- Various bug fixes,build fixes,memory leak fixes,and other stability and
reliability improvements
+
+gstreamer
+
+- pipeline: Improve resource cleanup logic for clock objects
+- filesink: fix the build with recent mingw-w64
+- basetransform, basesrc: Fix handling of buffer pool configuration failures
+
+gst-plugins-base
+
+- basetextoverlay: Don’t negotiate if caps haven’t changed
+- codec-utils: Update mime codec strings
+- fdmemory: Fix size calculation when sharing
+- gl elements add a yellow bar on JPEGs with non-even heights
+- glimagesink: Fix handling of odd height buffers
+- glwindow_cocoa: fix window not closing (w/o user window handle)
+- opusenc: Simplify Vorbis channel layout mapping code and fix 7.1 layout &
use surround multistream encoder
+- parsebin: Improve debug logging
+- playbin3: ensure GST_EVENT_SELECT_STREAMS event is sent to collection
source
+- tagdemux: propagate seek event seqnum to upstream
+- videodecoder: Don’t assume the ALLOCATION query contains a pool
+- videodecoder, videoaggregator: Fix handling of buffer pool configuration
failures
+
+gst-plugins-good
+
+- adaptivedemux2: Initialize start bitrate for dashdemux2 and hlsdemux2
+- dashdemux2: Unknown codec ‘flac’ when streaming a DASH MPD manifest with a
mp4 FLAC file
+- deinterlace: Improve pool configuration
+- flac: Fix 6.1 / 7.1 channel layouts
+- flacdec: Don’t forbid S32 sample size (0x07) unnecessarily
+- flacenc: Support S32 samples
+- flacdec: Decode 32-bit FLAC files
+- level: fix crash if no caps have been sent
+- level: Floating point exception (core dumped) when sending buffers without
caps
+- matroskademux: Bump maximum block size from 15MB to 32MB to allow 4k raw
video
+- matroskamux: Fix some more thread-safety issues
+- matroskamux: Fix thread-safety issues when requesting new pads
+- matroskamux: pad->track handling results in segmentation fault
+- mxfdemux / aiffparse / matroskaparse: Remove segment closing on
non-flushing seeks
+- qtdemux: Use gst_util_uint64_scale to scale guint64
+- qtmux: Fix robust recording estimates
+- splitmuxsrc - fix for seeking / flushing deadlock
+- v4l2object: Add support for colorimetry 1:4:16:3
+- wavenc: Fix downstream negotiation
+- wavparse: prevent setting empty strings as title tag
+
+gst-plugins-bad
+
+- aesenc / aesdec: use correct format specifier for buffer size in debug log
+- analytics: Fix build on MSVC by using libm dependency
+- curlhttpsrc: Various fixes
+- decklinkvideosink: Fix frame completion callbacks for firmware 14.3+
+- dtlsdec: mark generated cert agent with GST_OBJECT_FLAG_MAY_BE_LEAKED
+- fdkaacdec: Assertion on handling unsupported channel layouts
+- fdkaacdec: Invalidate channel_types/indices when setting a known config
+- hlssink: Guard NULL structure and use gst_structure_has_name()
+- midiparse: Fix a couple of potential out-of-bounds reads
+- mpegtsmux: Fix potential deadlock changing pmt-interval
+- mxfdemux: reconsider “closing running segment” for non flushing seeks
+- mxfdemux / aiffparse / matroskaparse: Remove segment closing on
non-flushing seeks
+- mxfdemux: Simplify timestamp tracking
+- mxfdemux: send event SegmentDone for segment seeks
+- mxfmpeg: Add custom Sony picture essence coding UL
+- playbin3: ensure GST_EVENT_SELECT_STREAMS event is sent to collection
source
+- vabasedec: Don’t assert when negotiating based on a gap event before the
first buffer
+- vkformat: Add VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 format
+- webrtc: Keep a ref of the ICEStream in the TransportStream
+- GstPlay: set_audio_track_enabled / set_video_track_enabled not functioning
for adaptivedemux2 sources
+- video: decoders: Fix possible crash when flushing H265/H266 decoder
+
+gst-plugins-ugly
+
+- No changes
+
+GStreamer Rust plugins
+
+- cctost2038anc: Fix typo with c_not_y_channel property documentation
+- dav1d: Stop iteration after finding first working pool
+- dav1d: Various fixes to allocation query handling
+- gtk4paintablesink: Propose a udmabuf pool / allocator if upstream asks for
sysmem
+- gtk4: Fix typo in odd-size subsample workaround
+- rtp: Update to rtcp-types 0.3
+- st2038combiner: Some fixes
+- st2038extractor: Add always-add-st2038-pad property
+- threadshare: allow disabling the IPv4 or IPv6 socket in ts-udpsink
+- threadshare: Update to flume 0.12
+- tracers: add function and signal for writing logs to PadPushTimings
+- version-helper: Update to toml_edit 0.24
+- webrtc: mark static caps with GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED
+- webrtcsink: don’t upscale when mitigating low bitrate
+- Fix new clippy 1.92 warnings
+- Update dependencies
+
+gst-libav
+
+- avviddec: Various fixes to allocation query handling
+- avviddec: Aggregate GstVideoAlignment on top of the meta api params,
instead of overriding them
+- avviddec: Set video alignment to internal pool
+
+gst-rtsp-server
+
+- No changes
+
+gstreamer-vaapi
+
+- No changes
+
+gstreamer-sharp
+
+- No changes
+
+gst-python
+
+- Override GstPadProbeInfo to get writable objects
+- Misc improvements
+- More typing fixes
+- 1.26.2 breaks Python bindings: No longer able to modify Gst.Buffer
metadata in pad probe callbacks
+
+gst-editing-services
+
+- python: More typing fixes
+
+gst-devtools,gst-validate + gst-integration-testsuites
+
+- dotsviewer: Update Rust dependencies
+
+gst-examples
+
+- webrtc: Update Rust dependencies
+
+gstreamer-docs
+
+- No changes
+
+Development build environment
+
+- No changes
+
+Cerbero build tool and packaging changes in 1.26.10
+
+- pkg-config: Ship it in the devel package
+- recipe: Update License enums to SPDX expressions
+- recipes: Fix GPL categorization of some plugins
+- recipes: Fix stray devel files making it into runtime
+- recipes: add GstApp python binding
+- Modernize MSI license.rtf formatting
+- Use ninja for all cmake recipes by default instead of GNU make
+- ci: Mark a racy xcode toolchain bug for retrying
+
+Contributors to 1.26.10
+
+Aaron Boxer, Brad Reitmeyer, Christoph Reiter, Doug Nazar, F. Duncanh,
François Laignel, Haejung Hwang, Hou Qi, Hyunjun Ko,
+Jakub Adam, Jan Schmidt, Jeongmin Kwak, Jerome Colle, L. E. Segovia, Mathieu
Duponchelle, Nicolas Dufresne, Nirbheek Chauhan,
+Philippe Normand, Piotr Brzeziński, Pratik Pachange, Robert Mader, Sanchayan
Maity, Sebastian Dröge, Stéphane Cerveau, Thibault
+Saunier, Tim-Philipp Müller, Tobias Schlager, Vivia Nikolaidou, Wilhelm
Bartel, Xavier Claessens, Yun Liu,
+
+… 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.26.10
+
+- List of Merge Requests applied in 1.26.10
+- List of Issues fixed in 1.26.10
+
Schedule for 1.28
Our next major feature release will be 1.28, and 1.27 will be the unstable
development version leading up to the stable 1.28
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/RELEASE
new/gst-plugins-base-1.26.10/RELEASE
--- old/gst-plugins-base-1.26.9/RELEASE 2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/RELEASE 2025-12-25 15:44:26.000000000
+0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.26.9.
+This is GStreamer gst-plugins-base 1.26.10.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopuscommon.c
new/gst-plugins-base-1.26.10/ext/opus/gstopuscommon.c
--- old/gst-plugins-base-1.26.9/ext/opus/gstopuscommon.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopuscommon.c 2025-12-25
15:44:26.000000000 +0100
@@ -73,6 +73,20 @@
GST_AUDIO_CHANNEL_POSITION_LFE1},
};
+/* Taken from opus_multistream_encoder.c.
+ *
+ * These are also the values returned by
opus_multistream_surround_encoder_init() */
+const GstOpusVorbisLayout gst_opus_vorbis_channel_map[8] = {
+ {1, 0, {0}}, /* 1: mono */
+ {1, 1, {0, 1}}, /* 2: stereo */
+ {2, 1, {0, 2, 1}}, /* 3: 1-d surround */
+ {2, 2, {0, 1, 2, 3}}, /* 4: quadraphonic surround */
+ {3, 2, {0, 4, 1, 2, 3}}, /* 5: 5-channel surround */
+ {4, 2, {0, 4, 1, 2, 3, 5}}, /* 6: 5.1 surround */
+ {4, 3, {0, 4, 1, 2, 3, 5, 6}}, /* 7: 6.1 surround */
+ {5, 3, {0, 6, 1, 2, 3, 4, 5, 7}}, /* 8: 7.1 surround */
+};
+
const char *gst_opus_channel_names[] = {
"mono",
"front left",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopuscommon.h
new/gst-plugins-base-1.26.10/ext/opus/gstopuscommon.h
--- old/gst-plugins-base-1.26.9/ext/opus/gstopuscommon.h 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopuscommon.h 2025-12-25
15:44:26.000000000 +0100
@@ -27,6 +27,12 @@
G_BEGIN_DECLS
extern const GstAudioChannelPosition gst_opus_channel_positions[][8];
+typedef struct {
+ gint n_streams;
+ gint n_coupled;
+ guint8 mapping[8];
+} GstOpusVorbisLayout;
+extern const GstOpusVorbisLayout gst_opus_vorbis_channel_map[8];
extern const char *gst_opus_channel_names[];
extern void gst_opus_common_log_channel_mapping_table (GstElement *element,
GstDebugCategory * category, const char *msg,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopusdec.c
new/gst-plugins-base-1.26.10/ext/opus/gstopusdec.c
--- old/gst-plugins-base-1.26.9/ext/opus/gstopusdec.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopusdec.c 2025-12-25
15:44:26.000000000 +0100
@@ -279,6 +279,7 @@
{
GstCaps *caps = gst_pad_get_allowed_caps (GST_AUDIO_DECODER_SRC_PAD (dec));
GstStructure *s;
+ GstAudioChannelPosition gst_pos[64];
GstAudioInfo info;
if (caps) {
@@ -375,23 +376,21 @@
/* pass valid order to audio info */
if (pos) {
- memcpy (dec->opus_pos, pos, sizeof (pos[0]) * dec->n_channels);
- gst_audio_channel_positions_to_valid_order (dec->opus_pos,
dec->n_channels);
+ memcpy (gst_pos, pos, sizeof (pos[0]) * dec->n_channels);
+ gst_audio_channel_positions_to_valid_order (gst_pos, dec->n_channels);
+ memcpy (dec->opus_pos, pos, dec->n_channels * sizeof (*dec->opus_pos));
+ dec->needs_reorder =
+ memcmp (pos, gst_pos, dec->n_channels * sizeof (*gst_pos)) != 0;
+ } else {
+ dec->needs_reorder = FALSE;
}
/* set up source format */
gst_audio_info_init (&info);
gst_audio_info_set_format (&info, GST_AUDIO_FORMAT_S16,
- dec->sample_rate, dec->n_channels, pos ? dec->opus_pos : NULL);
+ dec->sample_rate, dec->n_channels, pos ? gst_pos : NULL);
gst_audio_decoder_set_output_format (GST_AUDIO_DECODER (dec), &info);
- /* but we still need the opus order for later reordering */
- if (pos) {
- memcpy (dec->opus_pos, pos, sizeof (pos[0]) * dec->n_channels);
- } else {
- dec->opus_pos[0] = GST_AUDIO_CHANNEL_POSITION_INVALID;
- }
-
dec->info = info;
return TRUE;
@@ -817,7 +816,7 @@
if (gst_buffer_get_size (outbuf) == 0) {
gst_buffer_unref (outbuf);
outbuf = NULL;
- } else if (dec->opus_pos[0] != GST_AUDIO_CHANNEL_POSITION_INVALID) {
+ } else if (dec->needs_reorder) {
gst_audio_buffer_reorder_channels (outbuf, GST_AUDIO_FORMAT_S16,
dec->n_channels, dec->opus_pos, dec->info.position);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopusdec.h
new/gst-plugins-base-1.26.10/ext/opus/gstopusdec.h
--- old/gst-plugins-base-1.26.9/ext/opus/gstopusdec.h 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopusdec.h 2025-12-25
15:44:26.000000000 +0100
@@ -58,6 +58,7 @@
gint16 r128_gain;
GstAudioChannelPosition opus_pos[64];
+ gboolean needs_reorder;
GstAudioInfo info;
guint8 n_streams;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopusenc.c
new/gst-plugins-base-1.26.10/ext/opus/gstopusenc.c
--- old/gst-plugins-base-1.26.9/ext/opus/gstopusenc.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopusenc.c 2025-12-25
15:44:26.000000000 +0100
@@ -480,53 +480,19 @@
mapping[n] = n;
}
-static int
-gst_opus_enc_find_channel_position (GstOpusEnc * enc, const GstAudioInfo *
info,
- GstAudioChannelPosition position)
-{
- int n;
- for (n = 0; n < enc->n_channels; ++n) {
- if (GST_AUDIO_INFO_POSITION (info, n) == position) {
- return n;
- }
- }
- return -1;
-}
-
-static int
-gst_opus_enc_find_channel_position_in_vorbis_order (GstOpusEnc * enc,
- GstAudioChannelPosition position)
-{
- int c;
-
- for (c = 0; c < enc->n_channels; ++c) {
- if (gst_opus_channel_positions[enc->n_channels - 1][c] == position) {
- GST_INFO_OBJECT (enc,
- "Channel position %s maps to index %d in Vorbis order",
- gst_opus_channel_names[position], c);
- return c;
- }
- }
- GST_WARNING_OBJECT (enc,
- "Channel position %d is not representable in Vorbis order", position);
- return -1;
-}
-
static void
gst_opus_enc_setup_channel_mappings (GstOpusEnc * enc,
const GstAudioInfo * info)
{
#define MAPS(idx,pos) (GST_AUDIO_INFO_POSITION (info, (idx)) ==
GST_AUDIO_CHANNEL_POSITION_##pos)
- int n;
-
GST_DEBUG_OBJECT (enc, "Setting up channel mapping for %d channels",
enc->n_channels);
/* Start by setting up a default trivial mapping */
enc->n_stereo_streams = 0;
- gst_opus_enc_setup_trivial_mapping (enc, enc->encoding_channel_mapping);
- gst_opus_enc_setup_trivial_mapping (enc, enc->decoding_channel_mapping);
+ enc->needs_reorder = FALSE;
+ gst_opus_enc_setup_trivial_mapping (enc, enc->channel_mapping);
/* For one channel, use the basic RTP mapping */
if (enc->n_channels == 1 && !enc->unpositioned) {
@@ -546,95 +512,45 @@
return;
}
- /* For channels between 3 and 8, we use the Vorbis mapping if we can
- find a permutation that matches it. Mono and stereo will have been taken
- care of earlier, but this code also handles it. There are two mappings.
- One maps the input channels to an ordering which has the natural pairs
- first so they can benefit from the Opus stereo channel coupling, and the
- other maps this ordering to the Vorbis ordering. */
+ /* For channels between 3 and 8, we use the Vorbis mapping if we can. */
if (enc->n_channels >= 3 && enc->n_channels <= 8 && !enc->unpositioned) {
- int c0, c1, c0v, c1v;
- int mapped;
- gboolean positions_done[256];
- static const GstAudioChannelPosition pairs[][2] = {
- {GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
- GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT},
- {GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
- GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT},
- {GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
- GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER},
- {GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
- GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER},
- {GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
- GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT},
- {GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
- GST_AUDIO_CHANNEL_POSITION_REAR_CENTER},
- };
- size_t pair;
-
- GST_DEBUG_OBJECT (enc,
- "In range for the Vorbis mapping, building channel mapping tables");
-
- enc->n_stereo_streams = 0;
- mapped = 0;
- for (n = 0; n < 256; ++n)
- positions_done[n] = FALSE;
-
- /* First, find any natural pairs, and move them to the front */
- for (pair = 0; pair < G_N_ELEMENTS (pairs); ++pair) {
- GstAudioChannelPosition p0 = pairs[pair][0];
- GstAudioChannelPosition p1 = pairs[pair][1];
- c0 = gst_opus_enc_find_channel_position (enc, info, p0);
- c1 = gst_opus_enc_find_channel_position (enc, info, p1);
- if (c0 >= 0 && c1 >= 0) {
- /* We found a natural pair */
- GST_DEBUG_OBJECT (enc, "Natural pair '%s/%s' found at %d %d",
- gst_opus_channel_names[p0], gst_opus_channel_names[p1], c0, c1);
- /* Find where they map in Vorbis order */
- c0v = gst_opus_enc_find_channel_position_in_vorbis_order (enc, p0);
- c1v = gst_opus_enc_find_channel_position_in_vorbis_order (enc, p1);
- if (c0v < 0 || c1v < 0)
- goto unpositioned;
-
- enc->encoding_channel_mapping[mapped] = c0;
- enc->encoding_channel_mapping[mapped + 1] = c1;
- enc->decoding_channel_mapping[c0v] = mapped;
- enc->decoding_channel_mapping[c1v] = mapped + 1;
- enc->n_stereo_streams++;
- mapped += 2;
- positions_done[p0] = positions_done[p1] = TRUE;
- }
- }
-
- /* Now add all other input channels as mono streams */
- for (n = 0; n < enc->n_channels; ++n) {
- GstAudioChannelPosition position = GST_AUDIO_INFO_POSITION (info, n);
-
- /* if we already mapped it while searching for pairs, nothing else
- needs to be done */
- if (!positions_done[position]) {
- int cv;
- GST_DEBUG_OBJECT (enc, "Channel position %d is not mapped yet, adding",
- position);
- cv = gst_opus_enc_find_channel_position_in_vorbis_order (enc,
position);
- if (cv < 0)
- goto unpositioned;
- enc->encoding_channel_mapping[mapped] = n;
- enc->decoding_channel_mapping[cv] = mapped;
- mapped++;
- }
- }
+ const GstAudioChannelPosition *opus_positions =
+ gst_opus_channel_positions[enc->n_channels - 1];
+ GstAudioChannelPosition gst_positions[8];
+
+ memcpy (gst_positions, opus_positions, sizeof (gst_positions));
+ gst_audio_channel_positions_to_valid_order (gst_positions,
enc->n_channels);
+
+ if (memcmp (gst_positions, info->position,
+ enc->n_channels * sizeof (*gst_positions)) != 0)
+ goto unpositioned;
+
+ memcpy (enc->channel_mapping,
+ gst_opus_vorbis_channel_map[enc->n_channels - 1].mapping,
+ enc->n_channels);
+ enc->n_stereo_streams =
+ gst_opus_vorbis_channel_map[enc->n_channels - 1].n_coupled;
+
+ /* We always reorder our input to the Vorbis channel order. While the
+ * normal (non-surround) multistream encoder can do reordering itself:
+ *
+ * * Only the surround encoder has additional surround support that
+ * saves bandwidth,
+ * * Various specs and implementations only assume the "default"
+ * positions, and e.g. for the MPEG-TS mapping this has short forms
+ * in the signalling
+ */
+ memcpy (enc->opus_pos, opus_positions, sizeof (enc->opus_pos));
+ enc->needs_reorder =
+ memcmp (opus_positions, gst_positions,
+ enc->n_channels * sizeof (*gst_positions)) != 0;
#ifndef GST_DISABLE_GST_DEBUG
GST_INFO_OBJECT (enc,
"Mapping tables built: %d channels, %d stereo streams",
enc->n_channels,
enc->n_stereo_streams);
gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc),
opusenc_debug,
- "Encoding mapping table", enc->n_channels,
- enc->encoding_channel_mapping);
- gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc),
opusenc_debug,
- "Decoding mapping table", enc->n_channels,
- enc->decoding_channel_mapping);
+ "Mapping table", enc->n_channels, enc->channel_mapping);
#endif
enc->channel_mapping_family = 1;
@@ -651,8 +567,7 @@
else
GST_INFO_OBJECT (enc, "Unpositioned mapping, all channels mono");
- gst_opus_enc_setup_trivial_mapping (enc, enc->encoding_channel_mapping);
- gst_opus_enc_setup_trivial_mapping (enc, enc->decoding_channel_mapping);
+ gst_opus_enc_setup_trivial_mapping (enc, enc->channel_mapping);
enc->channel_mapping_family = 255;
enc->n_stereo_streams = 0;
@@ -678,9 +593,7 @@
&stream_count, &coupled_count, channel_mapping)
&& stream_count + coupled_count == enc->n_channels) {
enc->n_stereo_streams = coupled_count;
- memcpy (enc->decoding_channel_mapping, channel_mapping,
- sizeof (channel_mapping));
- memcpy (enc->encoding_channel_mapping, channel_mapping,
+ memcpy (enc->channel_mapping, channel_mapping,
sizeof (channel_mapping));
}
@@ -696,9 +609,7 @@
"Mapping tables built: %d channels, %d stereo streams", enc->n_channels,
enc->n_stereo_streams);
gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc), opusenc_debug,
- "Encoding mapping table", enc->n_channels,
enc->encoding_channel_mapping);
- gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc), opusenc_debug,
- "Decoding mapping table", enc->n_channels,
enc->decoding_channel_mapping);
+ "Mapping table", enc->n_channels, enc->channel_mapping);
#endif
#undef MAPS
@@ -762,17 +673,36 @@
GST_INFO_OBJECT (enc, "Mapping tables built: %d channels, %d stereo streams",
enc->n_channels, enc->n_stereo_streams);
gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc), opusenc_debug,
- "Encoding mapping table", enc->n_channels,
enc->encoding_channel_mapping);
- gst_opus_common_log_channel_mapping_table (GST_ELEMENT (enc), opusenc_debug,
- "Decoding mapping table", enc->n_channels,
enc->decoding_channel_mapping);
+ "Mapping table", enc->n_channels, enc->channel_mapping);
#endif
- enc->state = opus_multistream_encoder_create (enc->sample_rate,
- enc->n_channels, enc->n_channels - enc->n_stereo_streams,
- enc->n_stereo_streams, enc->encoding_channel_mapping,
- enc->audio_type, &error);
- if (!enc->state || error != OPUS_OK)
- goto encoder_creation_failed;
+#ifdef HAVE_LIBOPUS_1_1
+ if (enc->channel_mapping_family == 1) {
+ int streams, coupled_streams;
+ guint8 mapping[8];
+
+ enc->state = opus_multistream_surround_encoder_create (enc->sample_rate,
+ enc->n_channels, enc->channel_mapping_family,
+ &streams, &coupled_streams, mapping, enc->audio_type, &error);
+
+ if (!enc->state || error != OPUS_OK)
+ goto encoder_creation_failed;
+
+ /* We set all these values according to the Vorbis channel mapping family
+ * so this should really never fail */
+ if (streams != enc->n_channels - enc->n_stereo_streams ||
+ coupled_streams != enc->n_stereo_streams ||
+ memcmp (mapping, enc->channel_mapping, enc->n_channels) != 0)
+ goto encoder_creation_failed;
+ } else
+#endif
+ {
+ enc->state = opus_multistream_encoder_create (enc->sample_rate,
+ enc->n_channels, enc->n_channels - enc->n_stereo_streams,
+ enc->n_stereo_streams, enc->channel_mapping, enc->audio_type, &error);
+ if (!enc->state || error != OPUS_OK)
+ goto encoder_creation_failed;
+ }
opus_multistream_encoder_ctl (enc->state, OPUS_SET_BITRATE (enc->bitrate),
0);
opus_multistream_encoder_ctl (enc->state, OPUS_SET_BANDWIDTH
(enc->bandwidth),
@@ -802,7 +732,7 @@
header = gst_codec_utils_opus_create_header (enc->sample_rate,
enc->n_channels, enc->channel_mapping_family,
enc->n_channels - enc->n_stereo_streams, enc->n_stereo_streams,
- enc->decoding_channel_mapping, lookahead, 0);
+ enc->channel_mapping, lookahead, 0);
tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (enc));
if (!tags)
tags = empty_tags = gst_tag_list_new_empty ();
@@ -1025,8 +955,13 @@
memcpy (mdata, bdata, bsize);
data = mdata;
} else {
- data = bdata;
- size = bsize;
+ if (enc->needs_reorder) {
+ data = mdata = g_memdup2 (bdata, bsize);
+ size = bytes;
+ } else {
+ data = bdata;
+ size = bsize;
+ }
/* Adjust for lookahead here */
if (enc->pending_lookahead) {
@@ -1087,6 +1022,16 @@
trim_end);
}
+ if (enc->needs_reorder) {
+ const GstAudioInfo *info =
+ gst_audio_encoder_get_audio_info (GST_AUDIO_ENCODER (enc));
+
+ g_assert (mdata);
+ g_assert (info->channels == enc->n_channels);
+ gst_audio_reorder_channels (mdata, size, GST_AUDIO_FORMAT_S16,
+ enc->n_channels, info->position, enc->opus_pos);
+ }
+
gst_buffer_map (outbuf, &omap, GST_MAP_WRITE);
outsize =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/gstopusenc.h
new/gst-plugins-base-1.26.10/ext/opus/gstopusenc.h
--- old/gst-plugins-base-1.26.9/ext/opus/gstopusenc.h 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/gstopusenc.h 2025-12-25
15:44:26.000000000 +0100
@@ -84,9 +84,10 @@
guint16 lookahead, pending_lookahead;
guint8 channel_mapping_family;
- guint8 encoding_channel_mapping[256];
- guint8 decoding_channel_mapping[256];
+ guint8 channel_mapping[256];
guint8 n_stereo_streams;
+ GstAudioChannelPosition opus_pos[64];
+ gboolean needs_reorder;
};
struct _GstOpusEncClass {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/ext/opus/meson.build
new/gst-plugins-base-1.26.10/ext/opus/meson.build
--- old/gst-plugins-base-1.26.9/ext/opus/meson.build 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/opus/meson.build 2025-12-25
15:44:26.000000000 +0100
@@ -28,9 +28,14 @@
allow_fallback: true, default_options: ['docs=disabled'])
if opus_dep.found()
+ opus_defines = []
+ if opus_dep.version().version_compare('>=1.1')
+ opus_defines += ['-DHAVE_LIBOPUS_1_1']
+ endif
+
gstopus = library('gstopus',
opus_sources,
- c_args : gst_plugins_base_args,
+ c_args : gst_plugins_base_args + opus_defines,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : [pbutils_dep, tag_dep, audio_dep, gst_dep, gst_base_dep,
opus_dep, libm],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/ext/pango/gstbasetextoverlay.c
new/gst-plugins-base-1.26.10/ext/pango/gstbasetextoverlay.c
--- old/gst-plugins-base-1.26.9/ext/pango/gstbasetextoverlay.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/ext/pango/gstbasetextoverlay.c 2025-12-25
15:44:26.000000000 +0100
@@ -1042,8 +1042,18 @@
gst_base_text_overlay_setcaps (GstBaseTextOverlay * overlay, GstCaps * caps)
{
GstVideoInfo info;
+ GstCaps *prev_caps;
gboolean ret = FALSE;
+ prev_caps = gst_pad_get_current_caps (overlay->video_sinkpad);
+ if (prev_caps && gst_caps_is_equal (prev_caps, caps)) {
+ GST_DEBUG_OBJECT (overlay, "Caps didn't change, ignoring");
+ gst_clear_caps (&prev_caps);
+ return TRUE;
+ }
+
+ gst_clear_caps (&prev_caps);
+
if (!gst_video_info_from_caps (&info, caps))
goto invalid_caps;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/gst/playback/gstparsebin.c
new/gst-plugins-base-1.26.10/gst/playback/gstparsebin.c
--- old/gst-plugins-base-1.26.9/gst/playback/gstparsebin.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst/playback/gstparsebin.c 2025-12-25
15:44:26.000000000 +0100
@@ -4072,11 +4072,12 @@
gst_parse_pad_update_caps (GstParsePad * parsepad, GstCaps * caps)
{
if (caps && parsepad->active_stream) {
- GST_DEBUG_OBJECT (parsepad, "Storing caps %" GST_PTR_FORMAT
- " on stream %" GST_PTR_FORMAT, caps, parsepad->active_stream);
-
- if (gst_caps_is_fixed (caps))
+ if (gst_caps_is_fixed (caps)) {
+ GST_DEBUG_OBJECT (parsepad, "Storing caps %" GST_PTR_FORMAT
+ " on stream %" GST_PTR_FORMAT, caps, parsepad->active_stream);
gst_stream_set_caps (parsepad->active_stream, caps);
+ }
+
/* intuit a type */
if (gst_stream_get_stream_type (parsepad->active_stream) ==
GST_STREAM_TYPE_UNKNOWN) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/gst/playback/gstplaybin3.c
new/gst-plugins-base-1.26.10/gst/playback/gstplaybin3.c
--- old/gst-plugins-base-1.26.9/gst/playback/gstplaybin3.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst/playback/gstplaybin3.c 2025-12-25
15:44:26.000000000 +0100
@@ -1859,9 +1859,11 @@
GST_PLAY_BIN3_UNLOCK (playbin);
- /* Send this event directly to uridecodebin, so it works even
- * if uridecodebin didn't add any pads yet */
- res = gst_element_send_event (playbin->uridecodebin, event);
+ /* Send this event directly to collection_source, so it works even
+ * if collection_source didn't add any pads yet */
+ res =
+ gst_element_send_event ((GstElement *) playbin->collection_source,
+ event);
return res;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst/videotestsrc/gstvideotestsrc.c
new/gst-plugins-base-1.26.10/gst/videotestsrc/gstvideotestsrc.c
--- old/gst-plugins-base-1.26.9/gst/videotestsrc/gstvideotestsrc.c
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst/videotestsrc/gstvideotestsrc.c
2025-12-25 15:44:26.000000000 +0100
@@ -994,6 +994,11 @@
if (gst_query_find_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL)) {
gst_buffer_pool_config_add_option (config,
GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+ if (gst_buffer_pool_has_option (pool,
+ GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT))
+ gst_buffer_pool_config_add_option (config,
+ GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT);
}
gst_buffer_pool_set_config (pool, config);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/allocators/gstfdmemory.c
new/gst-plugins-base-1.26.10/gst-libs/gst/allocators/gstfdmemory.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/allocators/gstfdmemory.c
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/allocators/gstfdmemory.c
2025-12-25 15:44:26.000000000 +0100
@@ -194,7 +194,7 @@
parent = (GstMemory *) mem;
if (size == -1)
- size = gmem->maxsize - offset;
+ size = gmem->size - offset;
sub = g_new0 (GstFdMemory, 1);
/* the shared memory is always readonly */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
new/gst-plugins-base-1.26.10/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
--- old/gst-plugins-base-1.26.9/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
2025-12-25 15:44:26.000000000 +0100
@@ -257,6 +257,13 @@
[view removeFromSuperview];
+ if (!window_cocoa->priv->external_view) {
+ GstGLNSWindow *internal_win_id =
+ (__bridge GstGLNSWindow *) window_cocoa->priv->internal_win_id;
+
+ [internal_win_id close];
+ }
+
CFBridgingRelease (window_cocoa->priv->internal_win_id);
CFBridgingRelease (window_cocoa->priv->internal_view);
window_cocoa->priv->internal_win_id = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglutils.c
new/gst-plugins-base-1.26.10/gst-libs/gst/gl/gstglutils.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglutils.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/gl/gstglutils.c 2025-12-25
15:44:26.000000000 +0100
@@ -626,17 +626,6 @@
const GstVideoFormatInfo *finfo = info->finfo;
gint comp[GST_VIDEO_MAX_COMPONENTS];
gint padded_height;
- gsize plane_size;
-
- gst_video_format_info_component (info->finfo, plane, comp);
-
- padded_height = info->height;
-
- if (align)
- padded_height += align->padding_top + align->padding_bottom;
-
- padded_height =
- GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo, comp[0], padded_height);
if (GST_VIDEO_FORMAT_INFO_IS_TILED (finfo)) {
gsize stride;
@@ -648,12 +637,23 @@
y_tiles = GST_VIDEO_TILE_Y_TILES (stride);
tile_size = GST_VIDEO_FORMAT_INFO_TILE_SIZE (info->finfo, plane);
- plane_size = x_tiles * y_tiles * tile_size;
- } else {
- plane_size = GST_VIDEO_INFO_PLANE_STRIDE (info, plane) * padded_height;
+ return x_tiles * y_tiles * tile_size;
}
- return plane_size;
+ gst_video_format_info_component (info->finfo, plane, comp);
+
+ padded_height = info->height;
+ if (align)
+ padded_height += align->padding_top + align->padding_bottom;
+
+ /* Round according to the UV vertical subsampling */
+ padded_height =
+ GST_ROUND_UP_N (padded_height, 1 <<
info->finfo->h_sub[GST_VIDEO_COMP_U]);
+
+ padded_height =
+ GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo, comp[0], padded_height);
+
+ return GST_VIDEO_INFO_PLANE_STRIDE (info, plane) * padded_height;
}
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/codec-utils.c
new/gst-plugins-base-1.26.10/gst-libs/gst/pbutils/codec-utils.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/codec-utils.c
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/pbutils/codec-utils.c
2025-12-25 15:44:26.000000000 +0100
@@ -3541,14 +3541,26 @@
} else {
mime_codec = g_strdup ("mp4a.40");
}
+ } else if (g_strcmp0 (media_type, "audio/x-ac3") == 0) {
+ mime_codec = g_strdup ("ac-3");
+ } else if (g_strcmp0 (media_type, "audio/x-eac3") == 0) {
+ mime_codec = g_strdup ("ec-3");
+ } else if (g_strcmp0 (media_type, "audio/x-ac4") == 0) {
+ mime_codec = g_strdup ("ac-4");
} else if (g_strcmp0 (media_type, "audio/x-opus") == 0) {
mime_codec = g_strdup ("opus");
+ } else if (g_strcmp0 (media_type, "audio/x-flac") == 0) {
+ mime_codec = g_strdup ("flac");
} else if (g_strcmp0 (media_type, "audio/x-mulaw") == 0) {
mime_codec = g_strdup ("ulaw");
} else if (g_strcmp0 (media_type, "audio/x-adpcm") == 0) {
if (g_strcmp0 (gst_structure_get_string (caps_st, "layout"), "g726") == 0)
{
mime_codec = g_strdup ("g726");
}
+ } else if (g_strcmp0 (media_type, "application/ttml+xml") == 0) {
+ mime_codec = g_strdup ("stpp");
+ } else if (g_strcmp0 (media_type, "application/x-subtitle-vtt") == 0) {
+ mime_codec = g_strdup ("wvtt");
}
done:
@@ -3713,6 +3725,9 @@
/* ETSI TS 102 366 v1.4.1 - Digital Audio Compression (AC-3, Enhanced
AC-3) Standard, Annex F */
caps = gst_caps_new_empty_simple ("audio/x-eac3");
break;
+ case GST_MAKE_FOURCC ('a', 'c', '-', '4'):
+ caps = gst_caps_new_empty_simple ("audio/x-ac4");
+ break;
case GST_MAKE_FOURCC ('s', 't', 'p', 'p'):
/* IMSC1-conformant TTM XML */
caps = gst_caps_new_empty_simple ("application/ttml+xml");
@@ -3739,6 +3754,9 @@
/* Opus */
caps = gst_caps_new_empty_simple ("audio/x-opus");
break;
+ case GST_MAKE_FOURCC ('f', 'l', 'a', 'c'):
+ caps = gst_caps_new_empty_simple ("audio/x-flac");
+ break;
case GST_MAKE_FOURCC ('u', 'l', 'a', 'w'):
/* ulaw */
caps = gst_caps_new_empty_simple ("audio/x-mulaw");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/tag/gsttagdemux.c
new/gst-plugins-base-1.26.10/gst-libs/gst/tag/gsttagdemux.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/tag/gsttagdemux.c 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/tag/gsttagdemux.c 2025-12-25
15:44:26.000000000 +0100
@@ -1001,6 +1001,7 @@
}
upstream = gst_event_new_seek (rate, format, flags,
start_type, start, stop_type, stop);
+ gst_event_set_seqnum (upstream, gst_event_get_seqnum (event));
res = gst_pad_push_event (tagdemux->priv->sinkpad, upstream);
} else if (format == GST_FORMAT_TIME &&
tagdemux->priv->state == GST_TAG_DEMUX_STREAMING &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoaggregator.c
new/gst-plugins-base-1.26.10/gst-libs/gst/video/gstvideoaggregator.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoaggregator.c
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/video/gstvideoaggregator.c
2025-12-25 15:44:26.000000000 +0100
@@ -2798,10 +2798,17 @@
/* If change are not acceptable, fallback to generic pool */
if (!gst_buffer_pool_config_validate_params (config, caps, size, min,
max)) {
+ gst_structure_free (config);
+ gst_clear_object (&pool);
+ } else if (!gst_buffer_pool_set_config (pool, config)) {
+ gst_clear_object (&pool);
+ }
+
+ if (!pool) {
GST_DEBUG_OBJECT (agg, "unsupported pool, making new pool");
- gst_object_unref (pool);
pool = gst_video_buffer_pool_new ();
+ config = gst_buffer_pool_get_config (pool);
gst_buffer_pool_config_set_params (config, caps, size, min, max);
gst_buffer_pool_config_set_allocator (config, allocator, ¶ms);
@@ -2809,10 +2816,10 @@
gst_buffer_pool_config_add_option (config,
GST_BUFFER_POOL_OPTION_VIDEO_META);
}
- }
- if (!gst_buffer_pool_set_config (pool, config))
- goto config_failed;
+ if (!gst_buffer_pool_set_config (pool, config))
+ goto config_failed;
+ }
}
if (update)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideodecoder.c
new/gst-plugins-base-1.26.10/gst-libs/gst/video/gstvideodecoder.c
--- old/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideodecoder.c
2025-12-01 18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-libs/gst/video/gstvideodecoder.c
2025-12-25 15:44:26.000000000 +0100
@@ -4277,16 +4277,23 @@
/* If change are not acceptable, fallback to generic pool */
if (!gst_buffer_pool_config_validate_params (config, outcaps, size, min,
max)) {
- GST_DEBUG_OBJECT (decoder, "unsupported pool, making new pool");
+ gst_structure_free (config);
+ gst_clear_object (&pool);
+ } else if (!gst_buffer_pool_set_config (pool, config)) {
+ gst_clear_object (&pool);
+ }
- gst_object_unref (pool);
+ if (!pool) {
+ GST_DEBUG_OBJECT (decoder, "unsupported pool, making new pool");
pool = gst_video_buffer_pool_new ();
+
+ config = gst_buffer_pool_get_config (pool);
gst_buffer_pool_config_set_params (config, outcaps, size, min, max);
gst_buffer_pool_config_set_allocator (config, allocator, ¶ms);
- }
- if (!gst_buffer_pool_set_config (pool, config))
- goto config_failed;
+ if (!gst_buffer_pool_set_config (pool, config))
+ goto config_failed;
+ }
}
if (update_allocator)
@@ -4389,9 +4396,11 @@
}
decoder->priv->pool = pool;
- /* and activate */
- GST_DEBUG_OBJECT (decoder, "activate pool %" GST_PTR_FORMAT, pool);
- gst_buffer_pool_set_active (pool, TRUE);
+ if (pool) {
+ /* and activate */
+ GST_DEBUG_OBJECT (decoder, "activate pool %" GST_PTR_FORMAT, pool);
+ gst_buffer_pool_set_active (pool, TRUE);
+ }
done:
if (query)
@@ -4606,6 +4615,9 @@
}
}
+ if (!decoder->priv->pool)
+ goto fallback;
+
flow = gst_buffer_pool_acquire_buffer (decoder->priv->pool, &buffer, NULL);
if (flow != GST_FLOW_OK) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/gst-plugins-base.doap
new/gst-plugins-base-1.26.10/gst-plugins-base.doap
--- old/gst-plugins-base-1.26.9/gst-plugins-base.doap 2025-12-01
18:27:07.000000000 +0100
+++ new/gst-plugins-base-1.26.10/gst-plugins-base.doap 2025-12-25
15:44:26.000000000 +0100
@@ -36,6 +36,16 @@
<release>
<Version>
+ <revision>1.26.10</revision>
+ <branch>1.26</branch>
+ <name></name>
+ <created>2025-12-25</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.26.10.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.26.9</revision>
<branch>1.26</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.9/meson.build
new/gst-plugins-base-1.26.10/meson.build
--- old/gst-plugins-base-1.26.9/meson.build 2025-12-01 18:27:07.000000000
+0100
+++ new/gst-plugins-base-1.26.10/meson.build 2025-12-25 15:44:26.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-plugins-base', 'c',
- version : '1.26.9',
+ version : '1.26.10',
meson_version : '>= 1.4',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
++++++ gst-plugins-base.obsinfo ++++++
--- /var/tmp/diff_new_pack.836AKY/_old 2025-12-31 10:46:32.856323407 +0100
+++ /var/tmp/diff_new_pack.836AKY/_new 2025-12-31 10:46:32.864323735 +0100
@@ -1,5 +1,5 @@
name: gst-plugins-base
-version: 1.26.9
-mtime: 1764610027
-commit: f313fae193089408e278c0dd3450145e5a12307b
+version: 1.26.10
+mtime: 1766673866
+commit: bfdc62185e243d3633aa916187a566d03a587792