openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2024
- 2 participants
- 1399 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package tuxpaint for openSUSE:Factory checked in at 2024-08-13 13:23:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tuxpaint (Old)
and /work/SRC/openSUSE:Factory/.tuxpaint.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tuxpaint"
Tue Aug 13 13:23:29 2024 rev:16 rq:1193247 version:0.9.33
Changes:
--------
--- /work/SRC/openSUSE:Factory/tuxpaint/tuxpaint.changes 2024-02-12 18:54:23.403224081 +0100
+++ /work/SRC/openSUSE:Factory/.tuxpaint.new.7232/tuxpaint.changes 2024-08-13 13:23:44.699498780 +0200
@@ -1,0 +2,21 @@
+Fri Aug 2 06:18:46 UTC 2024 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 0.9.33:
+ * A new Filled Polygon magic tool offers a way to create
+ arbitrary filled polygonal shapes.
+ * A pair of Dither tools transform a drawing into a pattern of
+ dots reminiscent of classic computer displays or other devices
+ which can only show black and white.
+ * Add a set of fully transparent erasers to allow partially
+ exposing a background Starter or Template image (including
+ those created within Tux Paint) for subtle fading or ghost
+ effects.
+ * New Brushes have been added to the "Paint" and "Lines" tools.
+ * Brushes may have unique, localized descriptions.
+ * The "3D Glasses" Magic tool now offers multiple anaglyphic
+ color separation options.
+ * Magic tools may be upgrouped, appearing as one long list.
+ * Documentation improvements.
+- Switch Requires: freefonts -> gnu-free-fonts.
+
+-------------------------------------------------------------------
Old:
----
tuxpaint-0.9.32.tar.gz
New:
----
tuxpaint-0.9.33.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tuxpaint.spec ++++++
--- /var/tmp/diff_new_pack.dMEW5g/_old 2024-08-13 13:23:45.831545947 +0200
+++ /var/tmp/diff_new_pack.dMEW5g/_new 2024-08-13 13:23:45.831545947 +0200
@@ -18,7 +18,7 @@
%define sdlver 2
Name: tuxpaint
-Version: 0.9.32
+Version: 0.9.33
Release: 0
Summary: Drawing Program for Young Children
License: GPL-2.0-or-later
@@ -39,7 +39,7 @@
BuildRequires: pkgconfig(SDL%{?sdlver}_ttf)
BuildRequires: pkgconfig(fribidi)
BuildRequires: gperf
-BuildRequires: pkgconfig(imagequant)
+BuildRequires: (libimagequant-devel or pkgconfig(imagequant))
BuildRequires: libpaper-devel
BuildRequires: libpng-devel
BuildRequires: xdg-utils
@@ -53,7 +53,7 @@
BuildRequires: pkgconfig(SDL%{?sdlver}_gfx)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: update-desktop-files
-Requires: freefont
+Requires: gnu-free-fonts
Requires: netpbm
Recommends: tuxpaint-config
Recommends: tuxpaint-stamps
@@ -160,10 +160,9 @@
# remove unneeded scripts
rm %{buildroot}/%{_datadir}/%{name}/fonts/locale/zh_tw_docs/*.{sh,py,pe}
-# move bash-completion to new home
mkdir -p %{buildroot}/%{_datadir}/bash-completion/completions/
-mv %{buildroot}%{_sysconfdir}/bash_completion.d/tuxpaint-completion.bash \
- %{buildroot}%{_datadir}/bash-completion/completions/
+mv %{buildroot}%{_sysconfdir}/bash_completion.d/010_tuxpaint-completion.bash \
+ %{buildroot}%{_datadir}/bash-completion/completions/tuxpaint
rmdir %{buildroot}%{_sysconfdir}/bash_completion.d
# find lang
@@ -178,7 +177,7 @@
%exclude %{_mandir}/man1/tp-magic-config*
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
-%{_datadir}/bash-completion/completions/tuxpaint-completion.bash
+%{_datadir}/bash-completion/completions/tuxpaint
%{_bindir}/%{name}
%{_bindir}/tuxpaint-import
%{_libdir}/%{name}
++++++ tuxpaint-0.9.32.tar.gz -> tuxpaint-0.9.33.tar.gz ++++++
/work/SRC/openSUSE:Factory/tuxpaint/tuxpaint-0.9.32.tar.gz /work/SRC/openSUSE:Factory/.tuxpaint.new.7232/tuxpaint-0.9.33.tar.gz differ: char 18, line 1
++++++ tuxpaint-makefile.patch ++++++
--- /var/tmp/diff_new_pack.dMEW5g/_old 2024-08-13 13:23:45.879547947 +0200
+++ /var/tmp/diff_new_pack.dMEW5g/_new 2024-08-13 13:23:45.883548114 +0200
@@ -1,8 +1,8 @@
-Index: tuxpaint-0.9.32/Makefile
+Index: tuxpaint-0.9.33/Makefile
===================================================================
---- tuxpaint-0.9.32.orig/Makefile
-+++ tuxpaint-0.9.32/Makefile
-@@ -82,6 +82,7 @@ endif
+--- tuxpaint-0.9.33.orig/Makefile
++++ tuxpaint-0.9.33/Makefile
+@@ -89,6 +89,7 @@ endif
# <HOSTROOT>/lib Library files.
# <HOSTROOT>/lib/pkgconfig *.pc files.
#
@@ -10,7 +10,7 @@
ifdef HOST
ifdef HOSTROOT
ifeq ($(wildcard $(HOSTROOT)/.),)
-@@ -784,9 +785,9 @@ uninstall: uninstall-i18n
+@@ -804,9 +805,9 @@ uninstall: uninstall-i18n
xdg-desktop-menu uninstall tux4kids-tuxpaint.desktop ; \
xdg-desktop-menu uninstall tux4kids-tuxpaint-fullscreen.desktop ; \
fi
@@ -23,7 +23,7 @@
# Install default config file:
.PHONY: install-default-config
-@@ -984,7 +985,7 @@ install-pkgxdg: src/tuxpaint.desktop src
+@@ -1009,7 +1010,7 @@ install-pkgxdg: src/tuxpaint.desktop src
.PHONY: install-xdg
install-xdg: src/tuxpaint.desktop src/tuxpaint-fullscreen.desktop src/org.tuxpaint.Tuxpaint.appdata.xml
@echo ""
@@ -32,7 +32,7 @@
@if [ "x$(shell which xdg-icon-resource)" != "x" ]; then \
xdg-icon-resource install --size 192 data/images/icon192x192.png tux4kids-tuxpaint ; \
xdg-icon-resource install --size 128 data/images/icon128x128.png tux4kids-tuxpaint ; \
-@@ -1011,9 +1012,9 @@ install-xdg: src/tuxpaint.desktop src/tu
+@@ -1036,9 +1037,9 @@ install-xdg: src/tuxpaint.desktop src/tu
xdg-desktop-menu install tux4kids-tuxpaint-fullscreen.desktop ; \
rm ./tux4kids-tuxpaint-fullscreen.desktop ; \
fi
++++++ tuxpaint-pango-cflags.patch ++++++
--- /var/tmp/diff_new_pack.dMEW5g/_old 2024-08-13 13:23:45.895548613 +0200
+++ /var/tmp/diff_new_pack.dMEW5g/_new 2024-08-13 13:23:45.899548781 +0200
@@ -1,8 +1,8 @@
-Index: tuxpaint-0.9.32/Makefile
+Index: tuxpaint-0.9.33/Makefile
===================================================================
---- tuxpaint-0.9.32.orig/Makefile
-+++ tuxpaint-0.9.32/Makefile
-@@ -1203,7 +1203,7 @@ tuxpaint: obj/tuxpaint.o obj/i18n.o obj/
+--- tuxpaint-0.9.33.orig/Makefile
++++ tuxpaint-0.9.33/Makefile
+@@ -1228,7 +1228,7 @@ tuxpaint: obj/tuxpaint.o obj/i18n.o obj/
$(ARCH_LIBS)
@echo
@echo "...Linking Tux Paint..."
@@ -11,7 +11,7 @@
-o tuxpaint $^ \
$(SDL_LIBS) $(SVG_LIB) $(ARCH_LINKS) -lm
@$(RAD_CMD)
-@@ -1239,7 +1239,7 @@ obj/tuxpaint.o: src/tuxpaint.c \
+@@ -1264,7 +1264,7 @@ obj/tuxpaint.o: src/tuxpaint.c \
$(ARCH_HEADERS)
@echo
@echo "...Compiling Tux Paint from source..."
@@ -20,7 +20,7 @@
-c src/tuxpaint.c -o obj/tuxpaint.o
# Broke gperf|sed up into two steps so that it will fail properly if gperf is not installed; there's probably a more elegant solution -bjk 2009.11.20
-@@ -1286,14 +1286,14 @@ obj/fonts.o: src/fonts.c src/fonts.h src
+@@ -1311,14 +1311,14 @@ obj/fonts.o: src/fonts.c src/fonts.h src
src/get_fname.h src/debug.h
@echo
@echo "...Compiling font support..."
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package agama for openSUSE:Factory checked in at 2024-08-13 13:23:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama (Old)
and /work/SRC/openSUSE:Factory/.agama.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "agama"
Tue Aug 13 13:23:15 2024 rev:3 rq:1192640 version:0
Changes:
--------
--- /work/SRC/openSUSE:Factory/agama/agama.changes 2024-07-26 16:16:40.244532595 +0200
+++ /work/SRC/openSUSE:Factory/.agama.new.7232/agama.changes 2024-08-13 13:23:21.850546775 +0200
@@ -1,0 +2,7 @@
+Mon Jul 22 15:27:44 UTC 2024 - Josef Reidinger <jreidinger(a)suse.com>
+
+- Fix `agama questions list` to list only unaswered questions and
+ improve its performance
+ (gh#openSUSE/agama#1476)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _constraints ++++++
--- /var/tmp/diff_new_pack.1wT6cF/_old 2024-08-13 13:23:23.650621776 +0200
+++ /var/tmp/diff_new_pack.1wT6cF/_new 2024-08-13 13:23:23.654621942 +0200
@@ -1,8 +1,13 @@
<constraints>
<hardware>
+ <jobs>4</jobs>
<disk>
<size unit="G">20</size>
</disk>
+ <physicalmemory>
+ <size unit="G">8</size>
+ </physicalmemory>
</hardware>
+ <hostlabel exclude="true">SLOW_CPU</hostlabel>
</constraints>
++++++ _service ++++++
--- /var/tmp/diff_new_pack.1wT6cF/_old 2024-08-13 13:23:23.678622942 +0200
+++ /var/tmp/diff_new_pack.1wT6cF/_new 2024-08-13 13:23:23.678622942 +0200
@@ -14,7 +14,7 @@
<service name="cargo_vendor" mode="manual">
<param name="srcdir">agama/rust</param>
<param name="compression">zst</param>
- <param name="update">true</param>
+ <param name="update">false</param>
</service>
<service name="cargo_audit" mode="manual">
<param name="srcdir">agama/rust</param>
++++++ agama.obscpio ++++++
++++ 3149 lines of diff (skipped)
++++++ agama.obsinfo ++++++
--- /var/tmp/diff_new_pack.1wT6cF/_old 2024-08-13 13:23:23.890631776 +0200
+++ /var/tmp/diff_new_pack.1wT6cF/_new 2024-08-13 13:23:23.894631942 +0200
@@ -1,5 +1,5 @@
name: agama
-version: 9+270
-mtime: 1721381820
-commit: 6321fe05baed0c354ecf872850509e50eee8a598
+version: 9+414
+mtime: 1722523669
+commit: 83ee1d3ffd6e1764ba530c3c72148b24daaa8212
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/agama/vendor.tar.zst /work/SRC/openSUSE:Factory/.agama.new.7232/vendor.tar.zst differ: char 228434, line 984
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package file for openSUSE:Factory checked in at 2024-08-13 13:23:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/file (Old)
and /work/SRC/openSUSE:Factory/.file.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "file"
Tue Aug 13 13:23:11 2024 rev:137 rq:1193353 version:5.45
Changes:
--------
--- /work/SRC/openSUSE:Factory/file/python-magic.changes 2023-05-06 22:08:20.288431637 +0200
+++ /work/SRC/openSUSE:Factory/.file.new.7232/python-magic.changes 2024-08-13 13:23:15.830295941 +0200
@@ -1,0 +2,5 @@
+Fri Aug 9 14:18:25 UTC 2024 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Don't use `setup.py test`, that is now not allowed.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-magic.spec ++++++
--- /var/tmp/diff_new_pack.UalsUA/_old 2024-08-13 13:23:17.074347774 +0200
+++ /var/tmp/diff_new_pack.UalsUA/_new 2024-08-13 13:23:17.074347774 +0200
@@ -60,9 +60,7 @@
export LC_ALL=C.UTF-8
pushd python
%python_flavored_alternatives
-%{python_expand # indicate a writeable .pth directory for tests
-python%{$python_version} setup.py test
-}
+%pyunittest -v tests
popd
%files %{python_files}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libqt5-qtwebengine for openSUSE:Factory checked in at 2024-08-13 13:23:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtwebengine (Old)
and /work/SRC/openSUSE:Factory/.libqt5-qtwebengine.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwebengine"
Tue Aug 13 13:23:10 2024 rev:100 rq:1192344 version:5.15.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtwebengine/libqt5-qtwebengine.changes 2024-06-10 17:36:58.161467529 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-qtwebengine.new.7232/libqt5-qtwebengine.changes 2024-08-13 13:23:11.666122440 +0200
@@ -1,0 +2,6 @@
+Wed Aug 7 13:10:01 UTC 2024 - Christophe Marin <christophe(a)krop.fr>
+
+- Add ffmpeg 7 compatibility patch (Picked from Arch):
+ * qt5-webengine-ffmpeg7.patch
+
+-------------------------------------------------------------------
New:
----
qt5-webengine-ffmpeg7.patch
BETA DEBUG BEGIN:
New:- Add ffmpeg 7 compatibility patch (Picked from Arch):
* qt5-webengine-ffmpeg7.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtwebengine.spec ++++++
--- /var/tmp/diff_new_pack.YvCvOj/_old 2024-08-13 13:23:14.618245442 +0200
+++ /var/tmp/diff_new_pack.YvCvOj/_new 2024-08-13 13:23:14.622245609 +0200
@@ -64,6 +64,7 @@
### Patch 50-99 are applied conditionally
# PATCH-FIX-OPENSUSE -- allow building qtwebengine with ffmpeg5
Patch50: qtwebengine-ffmpeg5.patch
+Patch51: qt5-webengine-ffmpeg7.patch
###
# http://www.chromium.org/blink is not ported to PowerPC & s390
ExcludeArch: ppc ppc64 ppc64le s390 s390x
@@ -305,6 +306,7 @@
%if %{with system_ffmpeg}
%if %{pkg_vcmp pkgconfig(libavcodec) >= 5}
%patch -P50 -p1
+%patch -P51 -p1
%endif
%endif
++++++ qt5-webengine-ffmpeg7.patch ++++++
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis(a)chromium.org>
Date: Sat, 2 Apr 2022 05:13:53 +0000
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
commits)
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c…
Created with:
roll-dep src/third_party/ffmpeg
Fixed: 1293918
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
Auto-Submit: Dale Curtis <dalecurtis(a)chromium.org>
Reviewed-by: Dan Sanders <sandersd(a)chromium.org>
Commit-Queue: Dale Curtis <dalecurtis(a)chromium.org>
Cr-Commit-Position: refs/heads/main@{#988253}
---
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
media/ffmpeg/ffmpeg_common.cc | 11 +++----
media/filters/audio_file_reader.cc | 9 +++---
media/filters/audio_file_reader_unittest.cc | 6 ++--
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
8 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
index a043005..9ae2ca9 100644
--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
@@ -73,7 +73,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
}
- codec_context->channels = config.channel_count;
+ codec_context->ch_layout.nb_channels = config.channel_count;
codec_context->sample_rate = config.samples_per_second;
if (config.extra_data) {
@@ -123,8 +123,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
case cdm::kAudioFormatPlanarS16:
case cdm::kAudioFormatPlanarF32: {
const int decoded_size_per_channel =
- decoded_audio_size / av_frame.channels;
- for (int i = 0; i < av_frame.channels; ++i) {
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
memcpy(output_buffer, av_frame.extended_data[i],
decoded_size_per_channel);
output_buffer += decoded_size_per_channel;
@@ -184,13 +184,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
// Success!
decoding_loop_.reset(new FFmpegDecodingLoop(codec_context_.get()));
samples_per_second_ = config.samples_per_second;
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
+ bytes_per_frame_ =
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
output_timestamp_helper_.reset(
new AudioTimestampHelper(config.samples_per_second));
is_initialized_ = true;
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
av_sample_format_ = codec_context_->sample_fmt;
return true;
@@ -290,17 +291,18 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
for (auto& frame : audio_frames) {
int decoded_audio_size = 0;
if (frame->sample_rate != samples_per_second_ ||
- frame->channels != channels_ || frame->format != av_sample_format_) {
+ frame->ch_layout.nb_channels != channels_ ||
+ frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
<< " Sample Rate: " << frame->sample_rate << " vs "
- << samples_per_second_ << ", Channels: " << frame->channels
+ << samples_per_second_ << ", Channels: " << frame->ch_layout.nb_channels
<< " vs " << channels_ << ", Sample Format: " << frame->format
<< " vs " << av_sample_format_;
return cdm::kDecodeError;
}
decoded_audio_size = av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
if (!decoded_audio_size)
continue;
@@ -319,7 +321,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
size_t* total_size,
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
AVFrame* frame) {
- *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
+ *total_size += av_samples_get_buffer_size(nullptr, codec_context_->ch_layout.nb_channels,
frame->nb_samples,
codec_context_->sample_fmt, 1);
audio_frames->emplace_back(av_frame_clone(frame));
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index c17dd9f..0448cb5 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -341,10 +341,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
codec_context->sample_fmt, codec_context->codec_id);
ChannelLayout channel_layout =
- codec_context->channels > 8
+ codec_context->ch_layout.nb_channels > 8
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
- codec_context->channels);
+ : ChannelLayoutToChromeChannelLayout(
+ codec_context->ch_layout.u.mask,
+ codec_context->ch_layout.nb_channels);
int sample_rate = codec_context->sample_rate;
switch (codec) {
@@ -397,7 +398,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
extra_data, encryption_scheme, seek_preroll,
codec_context->delay);
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
- config->SetChannelsForDiscrete(codec_context->channels);
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
// These are bitstream formats unknown to ffmpeg, so they don't have
@@ -462,7 +463,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
// said information to decode.
- codec_context->channels = config.channels();
+ codec_context->ch_layout.nb_channels = config.channels();
codec_context->sample_rate = config.samples_per_second();
if (config.extra_data().empty()) {
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index bd73908..745c4c7 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -112,14 +112,15 @@ bool AudioFileReader::OpenDecoder() {
// Verify the channel layout is supported by Chrome. Acts as a sanity check
// against invalid files. See http://crbug.com/171962
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
- codec_context_->channels) ==
+ if (ChannelLayoutToChromeChannelLayout(
+ codec_context_->ch_layout.u.mask,
+ codec_context_->ch_layout.nb_channels) ==
CHANNEL_LAYOUT_UNSUPPORTED) {
return false;
}
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
sample_rate_ = codec_context_->sample_rate;
av_sample_format_ = codec_context_->sample_fmt;
@@ -222,7 +223,7 @@ bool AudioFileReader::OnNewFrame(
if (frames_read < 0)
return false;
- const int channels = frame->channels;
+ const int channels = frame->ch_layout.nb_channels;
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
index 6f231c8..ca5e5fb 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
audio_profile_ != stream_codec_parameters_->profile ||
sample_rate_index_ != sample_rate_index ||
- channel_configuration_ != stream_codec_parameters_->channels ||
+ channel_configuration_ !=
+ stream_codec_parameters_->ch_layout.nb_channels ||
frame_length_ != header_plus_packet_size) {
header_generated_ =
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
0, // layer
stream_codec_parameters_->profile, sample_rate_index,
0, // private stream
- stream_codec_parameters_->channels,
+ stream_codec_parameters_->ch_layout.nb_channels,
0, // originality
0, // home
0, // copyrighted_stream
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
codec_ = stream_codec_parameters_->codec_id;
audio_profile_ = stream_codec_parameters_->profile;
sample_rate_index_ = sample_rate_index;
- channel_configuration_ = stream_codec_parameters_->channels;
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
frame_length_ = header_plus_packet_size;
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
index ac8bb13..3e4e3f6 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
@@ -29,7 +29,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
- test_parameters_.channels = 2;
+ test_parameters_.ch_layout.nb_channels = 2;
test_parameters_.extradata = extradata_header_;
test_parameters_.extradata_size = sizeof(extradata_header_);
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
index 72fac61..ab49fd5 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
@@ -27,7 +27,7 @@ namespace media {
// Return the number of channels from the data in |frame|.
static inline int DetermineChannels(AVFrame* frame) {
- return frame->channels;
+ return frame->ch_layout.nb_channels;
}
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
@@ -227,7 +227,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
// Translate unsupported into discrete layouts for discrete configurations;
// ffmpeg does not have a labeled discrete configuration internally.
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
- codec_context_->channel_layout, codec_context_->channels);
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
channel_layout = CHANNEL_LAYOUT_DISCRETE;
@@ -344,11 +344,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
// Success!
av_sample_format_ = codec_context_->sample_fmt;
- if (codec_context_->channels != config.channels()) {
+ if (codec_context_->ch_layout.nb_channels != config.channels()) {
MEDIA_LOG(ERROR, media_log_)
<< "Audio configuration specified " << config.channels()
<< " channels, but FFmpeg thinks the file contains "
- << codec_context_->channels << " channels";
+ << codec_context_->ch_layout.nb_channels << " channels";
ReleaseFFmpegResources();
state_ = kUninitialized;
return false;
@@ -398,7 +398,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
if (frame->nb_samples <= 0)
return AVERROR(EINVAL);
- if (s->channels != channels) {
+ if (s->ch_layout.nb_channels != channels) {
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
return AVERROR(EINVAL);
}
@@ -431,7 +431,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
ChannelLayout channel_layout =
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
+ s->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
DLOG(ERROR) << "Unsupported channel layout.";
commit 62274859104bd828373ae406aa9309e610449ac5
Author: Ted Meyer <tmathmeyer(a)chromium.org>
Date: Fri Mar 22 19:56:55 2024 +0000
Replace deprecated use of AVCodecContext::reordered_opaque
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
now to trigger timestamp propagation.
Bug: 330573128
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer(a)chromium.org>
Reviewed-by: Dan Sanders <sandersd(a)chromium.org>
Cr-Commit-Position: refs/heads/main@{#1277051}
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index 0448cb5..89e9cf9 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -414,7 +414,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
// ever starts supporting xHE-AAC.
- if (codec == kCodecAAC && codec_context->profile == FF_PROFILE_UNKNOWN) {
+ constexpr uint8_t kXHEAAc = 41;
+ if (codec == kCodecAAC && codec_context->profile == FF_PROFILE_UNKNOWN ||
+ codec_context->profile == kXHEAAc) {
// Errors aren't fatal here, so just drop any MediaLog messages.
NullMediaLog media_log;
mp4::AAC aac_parser;
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
index ebd1bab..04d5ecc 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -86,16 +86,16 @@ FFMPEG_TEST_CASE(Cr47761, "crbug47761.ogg", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr50045, "crbug50045.mp4", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr62127, "crbug62127.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK);
-FFMPEG_TEST_CASE(Cr100492,
- "security/100492.webm",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr101458,
"security/101458.webm",
PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE);
-FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr108416,
+ "security/108416.webm",
+ PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE);
FFMPEG_TEST_CASE(Cr110849,
"security/110849.mkv",
DEMUXER_ERROR_COULD_NOT_OPEN,
@@ -150,7 +150,10 @@ FFMPEG_TEST_CASE(Cr234630b,
"security/234630b.mov",
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
-FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr242786,
+ "security/242786.webm",
+ PIPELINE_OK,
+ PIPELINE_ERROR_DECODE);
// Test for out-of-bounds access with slightly corrupt file (detection logic
// thinks it's a MONO file, but actually contains STEREO audio).
FFMPEG_TEST_CASE(Cr275590,
@@ -371,8 +374,8 @@ FFMPEG_TEST_CASE(WEBM_2,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
FFMPEG_TEST_CASE(WEBM_4,
"security/out.webm.68798.1929",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+ PIPELINE_OK,
+ PIPELINE_OK);
FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK);
// General MKV test cases.
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index 745c4c7..2b3abba 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -242,10 +242,10 @@ bool AudioFileReader::OnNewFrame(
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
- if (audio_codec_ == kCodecAAC && frame->pkt_duration) {
+ if (audio_codec_ == kCodecAAC && frame->duration) {
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
glue_->format_context()->streams[stream_index_]->time_base,
- frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
+ frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
const base::TimeDelta frame_duration = base::TimeDelta::FromSecondsD(
frames_read / static_cast<double>(sample_rate_));
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
index 7996606..a15aafc 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
@@ -86,7 +86,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
}
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
- : media_log_(media_log), state_(kUninitialized), decode_nalus_(false) {
+ : media_log_(media_log), state_(kUninitialized), decode_nalus_(false), timestamp_map_(128) {
DVLOG(1) << __func__;
thread_checker_.DetachFromThread();
}
@@ -183,7 +183,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
frame->width = coded_size.width();
frame->height = coded_size.height();
frame->format = codec_context->pix_fmt;
- frame->reordered_opaque = codec_context->reordered_opaque;
// Now create an AVBufferRef for the data just allocated. It will own the
// reference to the VideoFrame object.
@@ -318,8 +317,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
DCHECK(packet.data);
DCHECK_GT(packet.size, 0);
- // Let FFmpeg handle presentation timestamp reordering.
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
+ timestamp_map_.Put(timestamp_id, timestamp);
+ packet.opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
}
switch (decoding_loop_->DecodePacket(
@@ -358,8 +359,13 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
scoped_refptr<VideoFrame> video_frame =
reinterpret_cast<VideoFrame*>(av_buffer_get_opaque(frame->buf[0]));
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
+ if (ts_lookup == timestamp_map_.end()) {
+ return false;
+ }
video_frame->set_timestamp(
- base::TimeDelta::FromMicroseconds(frame->reordered_opaque));
+ base::TimeDelta::FromMicroseconds(std::get<1>(*ts_lookup)));
video_frame->metadata()->power_efficient = false;
output_cb_.Run(video_frame);
return true;
@@ -385,8 +391,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
codec_context_->thread_type =
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+
codec_context_->opaque = this;
codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
if (decode_nalus_)
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
index f13ce41..ee2444b 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
@@ -8,6 +8,8 @@
#include <list>
#include <memory>
+#include "base/containers/mru_cache.h"
+#include "base/util/type_safety/id_type.h"
#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
@@ -85,6 +87,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
// FFmpeg structures owned by this object.
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
+ // The gist here is that timestamps need to be 64 bits to store microsecond
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
+ // precision. We can't cast the timestamp to the void ptr object used by the
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
+ // However, we don't actually have 2^31 timestamped frames in a single
+ // playback, so it's fine to use the 32 bit value as a key in a map which
+ // contains the actual timestamps. Additionally, we've in the past set 128
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
+ // tasks, so we'll do that here too with the LRU cache.
+ using TimestampId = util::IdType<int64_t, size_t, 0>;
+
+ TimestampId::Generator timestamp_id_generator_;
+ base::MRUCache<TimestampId, int64_t> timestamp_map_;
+
VideoDecoderConfig config_;
VideoFramePool frame_pool_;
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
index d12fade..8abfbbf 100644
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -114,7 +114,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context,
int total_size = y_size + 2 * uv_size;
av_frame->format = context->pix_fmt;
- av_frame->reordered_opaque = context->reordered_opaque;
// Set |av_frame| members as required by FFmpeg.
av_frame->data[kYPlaneIndex] = frame_buffer->MutableDataY();
@@ -273,8 +272,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
packet.size = static_cast<int>(input_image.size());
- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs
- av_context_->reordered_opaque = frame_timestamp_us;
int result = avcodec_send_packet(av_context_.get(), &packet);
if (result < 0) {
@@ -290,10 +287,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
- // We don't expect reordering. Decoded frame tamestamp should match
- // the input one.
- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us);
-
absl::optional<uint8_t> qp;
// TODO(sakal): Maybe it is possible to get QP directly from FFmpeg.
h264_bitstream_parser_.ParseBitstream(input_image.data(), input_image.size());
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package qt6-webengine for openSUSE:Factory checked in at 2024-08-13 13:23:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-webengine (Old)
and /work/SRC/openSUSE:Factory/.qt6-webengine.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-webengine"
Tue Aug 13 13:23:00 2024 rev:34 rq:1192339 version:6.7.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-webengine/qt6-webengine.changes 2024-06-24 20:50:23.465940275 +0200
+++ /work/SRC/openSUSE:Factory/.qt6-webengine.new.7232/qt6-webengine.changes 2024-08-13 13:23:08.529991772 +0200
@@ -1,0 +2,6 @@
+Wed Aug 7 12:39:11 UTC 2024 - Christophe Marin <christophe(a)krop.fr>
+
+- Add patch to build qtwebengine with ffmpeg 7 (picked from Arch)
+ * qtwebengine-ffmpeg-7.patch
+
+-------------------------------------------------------------------
New:
----
qtwebengine-ffmpeg-7.patch
BETA DEBUG BEGIN:
New:- Add patch to build qtwebengine with ffmpeg 7 (picked from Arch)
* qtwebengine-ffmpeg-7.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qt6-webengine.spec ++++++
--- /var/tmp/diff_new_pack.tEq8Oe/_old 2024-08-13 13:23:11.310107606 +0200
+++ /var/tmp/diff_new_pack.tEq8Oe/_new 2024-08-13 13:23:11.310107606 +0200
@@ -47,6 +47,7 @@
# Patches 0-100 are upstream patches #
# Patches 100-200 are openSUSE and/or non-upstream(able) patches #
Patch100: rtc-dont-use-h264.patch
+Patch101: qtwebengine-ffmpeg-7.patch
#
# Chromium/blink don't support PowerPC and zSystems and build fails on
# 32 bits archs (https://bugreports.qt.io/browse/QTBUG-102143)
@@ -345,6 +346,11 @@
%prep
%autosetup -p1 -n %{tar_name}-%{real_version}%{tar_suffix}
+%if %{pkg_vcmp pkgconfig(libavcodec) <= 5}
+# The ffmpeg 7 compatibility patch would break build with older ffmpeg
+%patch -P101 -p1 -R
+%endif
+
%build
%if %{no_flavor}
# Determine the right number of parallel processes based on the available memory
++++++ qtwebengine-ffmpeg-7.patch ++++++
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis(a)chromium.org>
Date: Sat, 2 Apr 2022 05:13:53 +0000
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
commits)
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c…
Created with:
roll-dep src/third_party/ffmpeg
Fixed: 1293918
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
Auto-Submit: Dale Curtis <dalecurtis(a)chromium.org>
Reviewed-by: Dan Sanders <sandersd(a)chromium.org>
Commit-Queue: Dale Curtis <dalecurtis(a)chromium.org>
Cr-Commit-Position: refs/heads/main@{#988253}
---
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
media/ffmpeg/ffmpeg_common.cc | 11 +++----
media/filters/audio_file_reader.cc | 9 +++---
media/filters/audio_file_reader_unittest.cc | 6 ++--
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
8 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
index c535d2b..62ddbc8 100644
--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
}
- codec_context->channels = config.channel_count;
+ codec_context->ch_layout.nb_channels = config.channel_count;
codec_context->sample_rate = config.samples_per_second;
if (config.extra_data) {
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
case cdm::kAudioFormatPlanarS16:
case cdm::kAudioFormatPlanarF32: {
const int decoded_size_per_channel =
- decoded_audio_size / av_frame.channels;
- for (int i = 0; i < av_frame.channels; ++i) {
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
memcpy(output_buffer, av_frame.extended_data[i],
decoded_size_per_channel);
output_buffer += decoded_size_per_channel;
@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
// Success!
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
samples_per_second_ = config.samples_per_second;
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
+ bytes_per_frame_ =
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
output_timestamp_helper_ =
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
is_initialized_ = true;
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
av_sample_format_ = codec_context_->sample_fmt;
return true;
@@ -291,7 +292,8 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
for (auto& frame : audio_frames) {
int decoded_audio_size = 0;
if (frame->sample_rate != samples_per_second_ ||
- frame->channels != channels_ || frame->format != av_sample_format_) {
+ frame->ch_layout.nb_channels != channels_ ||
+ frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
<< " Sample Rate: " << frame->sample_rate << " vs "
<< samples_per_second_
@@ -302,7 +304,7 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
}
decoded_audio_size = av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
if (!decoded_audio_size)
continue;
@@ -322,7 +324,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
AVFrame* frame) {
*total_size += av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
audio_frames->emplace_back(av_frame_clone(frame));
return true;
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index 2665355..910f9ad 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -336,10 +336,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
codec_context->sample_fmt, codec_context->codec_id);
ChannelLayout channel_layout =
- codec_context->channels > 8
+ codec_context->ch_layout.nb_channels > 8
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
- codec_context->channels);
+ : ChannelLayoutToChromeChannelLayout(
+ codec_context->ch_layout.u.mask,
+ codec_context->ch_layout.nb_channels);
switch (codec) {
// For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
@@ -391,7 +392,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
extra_data, encryption_scheme, seek_preroll,
codec_context->delay);
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
- config->SetChannelsForDiscrete(codec_context->channels);
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
// These are bitstream formats unknown to ffmpeg, so they don't have
@@ -460,7 +461,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
// said information to decode.
- codec_context->channels = config.channels();
+ codec_context->ch_layout.nb_channels = config.channels();
codec_context->sample_rate = config.samples_per_second();
if (config.extra_data().empty()) {
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index 777eabc..2b58dd7 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
// Verify the channel layout is supported by Chrome. Acts as a sanity check
// against invalid files. See http://crbug.com/171962
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
- codec_context_->channels) ==
+ if (ChannelLayoutToChromeChannelLayout(
+ codec_context_->ch_layout.u.mask,
+ codec_context_->ch_layout.nb_channels) ==
CHANNEL_LAYOUT_UNSUPPORTED) {
return false;
}
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
sample_rate_ = codec_context_->sample_rate;
av_sample_format_ = codec_context_->sample_fmt;
@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
if (frames_read < 0)
return false;
- const int channels = frame->channels;
+ const int channels = frame->ch_layout.nb_channels;
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
index 76b41aa..e26b6cd 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
audio_profile_ != stream_codec_parameters_->profile ||
sample_rate_index_ != sample_rate_index ||
- channel_configuration_ != stream_codec_parameters_->channels ||
+ channel_configuration_ !=
+ stream_codec_parameters_->ch_layout.nb_channels ||
frame_length_ != header_plus_packet_size) {
header_generated_ =
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
0, // layer
stream_codec_parameters_->profile, sample_rate_index,
0, // private stream
- stream_codec_parameters_->channels,
+ stream_codec_parameters_->ch_layout.nb_channels,
0, // originality
0, // home
0, // copyrighted_stream
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
codec_ = stream_codec_parameters_->codec_id;
audio_profile_ = stream_codec_parameters_->profile;
sample_rate_index_ = sample_rate_index;
- channel_configuration_ = stream_codec_parameters_->channels;
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
frame_length_ = header_plus_packet_size;
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
index 3b46f7f..1897eb0 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
- test_parameters_.channels = 2;
+ test_parameters_.ch_layout.nb_channels = 2;
test_parameters_.extradata = extradata_header_;
test_parameters_.extradata_size = sizeof(extradata_header_);
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
index bf3ed00..d564ee9 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
@@ -29,7 +29,7 @@ namespace media {
// Return the number of channels from the data in |frame|.
static inline int DetermineChannels(AVFrame* frame) {
- return frame->channels;
+ return frame->ch_layout.nb_channels;
}
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
@@ -243,7 +243,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
// Translate unsupported into discrete layouts for discrete configurations;
// ffmpeg does not have a labeled discrete configuration internally.
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
- codec_context_->channel_layout, codec_context_->channels);
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
channel_layout = CHANNEL_LAYOUT_DISCRETE;
@@ -360,11 +360,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
// Success!
av_sample_format_ = codec_context_->sample_fmt;
- if (codec_context_->channels != config.channels()) {
+ if (codec_context_->ch_layout.nb_channels != config.channels()) {
MEDIA_LOG(ERROR, media_log_)
<< "Audio configuration specified " << config.channels()
<< " channels, but FFmpeg thinks the file contains "
- << codec_context_->channels << " channels";
+ << codec_context_->ch_layout.nb_channels << " channels";
ReleaseFFmpegResources();
state_ = DecoderState::kUninitialized;
return false;
@@ -415,7 +415,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
if (frame->nb_samples <= 0)
return AVERROR(EINVAL);
- if (s->channels != channels) {
+ if (s->ch_layout.nb_channels != channels) {
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
return AVERROR(EINVAL);
}
@@ -448,7 +448,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
ChannelLayout channel_layout =
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
+ s->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
DLOG(ERROR) << "Unsupported channel layout.";
commit 62274859104bd828373ae406aa9309e610449ac5
Author: Ted Meyer <tmathmeyer(a)chromium.org>
Date: Fri Mar 22 19:56:55 2024 +0000
Replace deprecated use of AVCodecContext::reordered_opaque
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
now to trigger timestamp propagation.
Bug: 330573128
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer(a)chromium.org>
Reviewed-by: Dan Sanders <sandersd(a)chromium.org>
Cr-Commit-Position: refs/heads/main@{#1277051}
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index 910f9ad..8be165c 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -411,7 +411,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
// ever starts supporting xHE-AAC.
- if (codec_context->profile == FF_PROFILE_UNKNOWN) {
+ constexpr uint8_t kXHEAAc = 41;
+ if (codec_context->profile == FF_PROFILE_UNKNOWN ||
+ codec_context->profile == kXHEAAc) {
// Errors aren't fatal here, so just drop any MediaLog messages.
NullMediaLog media_log;
mp4::AAC aac_parser;
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
index 05dcb1c..866f446 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -90,16 +90,16 @@ FFMPEG_TEST_CASE(Cr62127,
PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK);
-FFMPEG_TEST_CASE(Cr100492,
- "security/100492.webm",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr101458,
"security/101458.webm",
PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE);
-FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr108416,
+ "security/108416.webm",
+ PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE);
FFMPEG_TEST_CASE(Cr110849,
"security/110849.mkv",
DEMUXER_ERROR_COULD_NOT_OPEN,
@@ -154,7 +154,10 @@ FFMPEG_TEST_CASE(Cr234630b,
"security/234630b.mov",
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
-FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr242786,
+ "security/242786.webm",
+ PIPELINE_OK,
+ PIPELINE_ERROR_DECODE);
// Test for out-of-bounds access with slightly corrupt file (detection logic
// thinks it's a MONO file, but actually contains STEREO audio).
FFMPEG_TEST_CASE(Cr275590,
@@ -372,8 +375,8 @@ FFMPEG_TEST_CASE(WEBM_2,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
FFMPEG_TEST_CASE(WEBM_4,
"security/out.webm.68798.1929",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+ PIPELINE_OK,
+ PIPELINE_OK);
FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK);
// General MKV test cases.
diff --git a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
index a7b2533..ba3c308 100644
--- a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
@@ -484,7 +484,7 @@ constexpr TestParams kXheAacTestParams[] = {
}},
0,
29400,
- CHANNEL_LAYOUT_MONO,
+ CHANNEL_LAYOUT_UNSUPPORTED,
AudioCodecProfile::kXHE_AAC},
#endif
{AudioCodec::kAAC,
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index 2b58dd7..9d37f32 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -243,18 +243,10 @@ bool AudioFileReader::OnNewFrame(
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-#else
if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
glue_->format_context()->streams[stream_index_]->time_base,
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
- frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-#else
frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
const base::TimeDelta frame_duration =
base::Seconds(frames_read / static_cast<double>(sample_rate_));
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
index a1c633d..5784fe1 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
@@ -61,15 +61,14 @@ class AudioFileReaderTest : public testing::Test {
// Verify packets are consistent across demuxer runs. Reads the first few
// packets and then seeks back to the start timestamp and verifies that the
// hashes match on the packets just read.
- void VerifyPackets() {
- const int kReads = 3;
+ void VerifyPackets(int packet_reads) {
const int kTestPasses = 2;
AVPacket packet;
base::TimeDelta start_timestamp;
std::vector<std::string> packet_md5_hashes_;
for (int i = 0; i < kTestPasses; ++i) {
- for (int j = 0; j < kReads; ++j) {
+ for (int j = 0; j < packet_reads; ++j) {
ASSERT_TRUE(reader_->ReadPacketForTesting(&packet));
// On the first pass save the MD5 hash of each packet, on subsequent
@@ -98,7 +97,8 @@ class AudioFileReaderTest : public testing::Test {
int sample_rate,
base::TimeDelta duration,
int frames,
- int expected_frames) {
+ int expected_frames,
+ int packet_reads = 3) {
Initialize(fn);
ASSERT_TRUE(reader_->Open());
EXPECT_EQ(channels, reader_->channels());
@@ -112,7 +112,7 @@ class AudioFileReaderTest : public testing::Test {
EXPECT_EQ(reader_->HasKnownDuration(), false);
}
if (!packet_verification_disabled_)
- ASSERT_NO_FATAL_FAILURE(VerifyPackets());
+ ASSERT_NO_FATAL_FAILURE(VerifyPackets(packet_reads));
ReadAndVerify(hash, expected_frames);
}
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
}
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
- RunTestFailingDecode("midstream_config_change.mp3", 42624);
+ RunTestFailingDecode("midstream_config_change.mp3", 0);
}
#endif
@@ -229,7 +229,7 @@ TEST_F(AudioFileReaderTest, VorbisInvalidChannelLayout) {
TEST_F(AudioFileReaderTest, WaveValidFourChannelLayout) {
RunTest("4ch.wav", "131.71,38.02,130.31,44.89,135.98,42.52,", 4, 44100,
- base::Microseconds(100001), 4411, 4410);
+ base::Microseconds(100001), 4411, 4410, /*packet_reads=*/2);
}
TEST_F(AudioFileReaderTest, ReadPartialMP3) {
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
index e62b2af..ab39796 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
@@ -125,7 +125,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
}
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
- : media_log_(media_log) {
+ : media_log_(media_log), timestamp_map_(128) {
DVLOG(1) << __func__;
DETACH_FROM_SEQUENCE(sequence_checker_);
}
@@ -204,10 +204,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
frame->linesize[plane] = layout->planes()[plane].stride;
}
- // This seems unsafe, given threaded decoding. However, `reordered_opaque` is
- // also going away upstream, so we need a whole new mechanism either way.
- frame->reordered_opaque = codec_context->reordered_opaque;
-
// This will be freed by `ReleaseVideoBufferImpl`.
auto* opaque = new OpaqueData(fb_priv, frame_pool_, data, allocation_size,
std::move(*layout));
@@ -354,8 +350,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
DCHECK(packet->data);
DCHECK_GT(packet->size, 0);
- // Let FFmpeg handle presentation timestamp reordering.
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
+ packet->opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
}
FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
@@ -414,7 +412,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
}
gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
- const auto pts = base::Microseconds(frame->reordered_opaque);
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
+ if (ts_lookup == timestamp_map_.end()) {
+ return false;
+ }
+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
auto video_frame = VideoFrame::WrapExternalDataWithLayout(
opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
pts);
@@ -489,8 +492,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
codec_context_->thread_type =
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+
codec_context_->opaque = this;
codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
if (decode_nalus_)
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
index 60cb9d5..4fa8628 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
@@ -7,10 +7,12 @@
#include <memory>
+#include "base/containers/lru_cache.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/sequence_checker.h"
+#include "base/types/id_type.h"
#include "media/base/supported_video_decoder_config.h"
#include "media/base/video_decoder.h"
#include "media/base/video_decoder_config.h"
@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
// FFmpeg structures owned by this object.
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
+ // The gist here is that timestamps need to be 64 bits to store microsecond
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
+ // precision. We can't cast the timestamp to the void ptr object used by the
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
+ // However, we don't actually have 2^31 timestamped frames in a single
+ // playback, so it's fine to use the 32 bit value as a key in a map which
+ // contains the actual timestamps. Additionally, we've in the past set 128
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
+ // tasks, so we'll do that here too with the LRU cache.
+ using TimestampId = base::IdType<int64_t, size_t, 0>;
+
+ TimestampId::Generator timestamp_id_generator_;
+ base::LRUCache<TimestampId, int64_t> timestamp_map_;
+
VideoDecoderConfig config_;
scoped_refptr<FrameBufferPool> frame_pool_;
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
index f67718c..fe42aef 100644
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -229,7 +229,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context,
int total_size = y_size + 2 * uv_size;
av_frame->format = context->pix_fmt;
- av_frame->reordered_opaque = context->reordered_opaque;
// Create a VideoFrame object, to keep a reference to the buffer.
// TODO(nisse): The VideoFrame's timestamp and rotation info is not used.
@@ -377,8 +376,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
packet->size = static_cast<int>(input_image.size());
- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs
- av_context_->reordered_opaque = frame_timestamp_us;
int result = avcodec_send_packet(av_context_.get(), packet.get());
@@ -395,10 +392,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
- // We don't expect reordering. Decoded frame timestamp should match
- // the input one.
- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us);
-
// TODO(sakal): Maybe it is possible to get QP directly from FFmpeg.
h264_bitstream_parser_.ParseBitstream(input_image);
absl::optional<int> qp = h264_bitstream_parser_.GetLastSliceQp();
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-PyJWT for openSUSE:Factory checked in at 2024-08-13 13:22:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-PyJWT (Old)
and /work/SRC/openSUSE:Factory/.python-PyJWT.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyJWT"
Tue Aug 13 13:22:56 2024 rev:32 rq:1193642 version:2.9.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-PyJWT/python-PyJWT.changes 2023-10-15 19:29:17.384678559 +0200
+++ /work/SRC/openSUSE:Factory/.python-PyJWT.new.7232/python-PyJWT.changes 2024-08-13 13:23:06.901923937 +0200
@@ -1,0 +2,27 @@
+Tue Aug 13 07:09:23 UTC 2024 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- Skip failing test gh#jpadilla/pyjwt#802
+
+-------------------------------------------------------------------
+Mon Aug 5 11:16:57 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 2.9.0
+ * Drop support for Python 3.7 (EOL) by @hugovk in #910
+ * Allow JWT issuer claim validation to accept a list of
+ strings too by @mattpollak in #913
+ * Fix unnecessary string concatenation by @sirosen in #904
+ * Fix docs for ``jwt.decode_complete`` to include ``strict_aud``
+ option by @woodruffw in #923
+ * Fix docs step by @jpadilla in #950
+ * Fix: Remove an unused variable from example code block
+ by @kenkoooo in #958
+ * Add support for Python 3.12 by @hugovk in #910
+ * Improve performance of ``is_ssh_key`` + add unit test by @bdraco in #940
+ * Allow ``jwt.decode()`` to accept a PyJWK object by @luhn in #886
+ * Make ``algorithm_name`` attribute available on PyJWK by @luhn in #886
+ * Raise ``InvalidKeyError`` on invalid PEM keys to be compatible
+ with cryptography 42.x.x by @CollinEMac in #952
+ * Raise an exception when required cryptography dependency
+ is missing by @tobloef in #963
+
+-------------------------------------------------------------------
Old:
----
PyJWT-2.8.0.tar.gz
New:
----
pyjwt-2.9.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-PyJWT.spec ++++++
--- /var/tmp/diff_new_pack.tCqqQO/_old 2024-08-13 13:23:07.457947104 +0200
+++ /var/tmp/diff_new_pack.tCqqQO/_new 2024-08-13 13:23:07.457947104 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-PyJWT
#
-# 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
@@ -19,13 +19,13 @@
%global skip_python2 1
%{?sle15_python_module_pythons}
Name: python-PyJWT
-Version: 2.8.0
+Version: 2.9.0
Release: 0
Summary: JSON Web Token implementation in Python
License: MIT
Group: Development/Languages/Python
URL: https://github.com/progrium/pyjwt
-Source: https://files.pythonhosted.org/packages/source/P/PyJWT/PyJWT-%{version}.tar…
+Source: https://files.pythonhosted.org/packages/source/p/pyjwt/pyjwt-%{version}.tar…
BuildRequires: %{python_module cryptography >= 3.3.1}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
@@ -36,7 +36,7 @@
Requires: python-cryptography >= 3.3.1
Requires: python-typing-extensions
Requires(post): update-alternatives
-Requires(postun):update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
%python_subpackages
@@ -44,7 +44,7 @@
A Python implementation of JSON Web Token draft 01.
%prep
-%setup -q -n PyJWT-%{version}
+%setup -q -n pyjwt-%{version}
%build
%pyproject_wheel
@@ -57,7 +57,10 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%pytest -k "not test_verify_false_deprecated" -k "not test_get_jwt_set_sslcontext_default"
+donttest="test_verify_false_deprecated or test_get_jwt_set_sslcontext_default"
+# Failing test: gh#jpadilla/pyjwt#802
+donttest+=" or test_ec_to_jwk_with_invalid_curve"
+%pytest -k "not ($donttest)"
%files %{python_files}
%license LICENSE
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-handy-archives for openSUSE:Factory checked in at 2024-08-13 13:22:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-handy-archives (Old)
and /work/SRC/openSUSE:Factory/.python-handy-archives.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-handy-archives"
Tue Aug 13 13:22:55 2024 rev:2 rq:1193378 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-handy-archives/python-handy-archives.changes 2024-07-30 11:56:26.926329230 +0200
+++ /work/SRC/openSUSE:Factory/.python-handy-archives.new.7232/python-handy-archives.changes 2024-08-13 13:23:05.977885437 +0200
@@ -1,0 +2,7 @@
+Mon Aug 12 09:12:23 UTC 2024 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- Add upstream patch to fix tests with pytest >= 8.1:
+ 0001-Use-reason-instead-of-msg-for-pytest.skip.patch
+ gh#domdfcoding/handy-archives#35
+
+-------------------------------------------------------------------
New:
----
0001-Use-reason-instead-of-msg-for-pytest.skip.patch
BETA DEBUG BEGIN:
New:- Add upstream patch to fix tests with pytest >= 8.1:
0001-Use-reason-instead-of-msg-for-pytest.skip.patch
gh#domdfcoding/handy-archives#35
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-handy-archives.spec ++++++
--- /var/tmp/diff_new_pack.LknDzr/_old 2024-08-13 13:23:06.685914937 +0200
+++ /var/tmp/diff_new_pack.LknDzr/_new 2024-08-13 13:23:06.685914937 +0200
@@ -33,6 +33,8 @@
Source: https://github.com/domdfcoding/handy-archives/archive/refs/tags/v%{version}…
# PATCH-FIX-UPSTREAM gh#domdfcoding/handy-archives#3bc48dda6a06545ba53a829c6efb0f1a1b95349e
Patch0: ignore-tarfile-deprecation-warning.patch
+# PATCH-FIX-UPSTREAM: 0001-Use-reason-instead-of-msg-for-pytest.skip.patch gh#domdfcoding/handy-archives#35
+Patch1: 0001-Use-reason-instead-of-msg-for-pytest.skip.patch
BuildRequires: %{python_module flit-core >= 3.2}
BuildRequires: %{python_module pip}
%if %{with test}
++++++ 0001-Use-reason-instead-of-msg-for-pytest.skip.patch ++++++
From 51c1bad2af2a9bfd65f3543d5548ffbd218ee6a3 Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia(a)suse.com>
Date: Mon, 12 Aug 2024 11:05:45 +0200
Subject: [PATCH] Use reason instead of msg for pytest.skip
msg argument is removed since version 8.1.0
https://github.com/pytest-dev/pytest/commit/0591569b4ba9bfb12e5b5307da621a8…
---
tests/test_zipfile.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/test_zipfile.py b/tests/test_zipfile.py
index 3e5e0b1..da81e75 100644
--- a/tests/test_zipfile.py
+++ b/tests/test_zipfile.py
@@ -761,11 +761,11 @@ class TestStoredTestsWithSourceFile(AbstractTestsWithSourceFile):
try:
time.localtime(ts)
except OverflowError:
- pytest.skip(msg=f'time.localtime({ts}) raises OverflowError')
+ pytest.skip(reason=f'time.localtime({ts}) raises OverflowError')
try:
os.utime(testfn, (ts, ts))
except OverflowError:
- pytest.skip(msg="Host fs cannot set timestamp to required value.")
+ pytest.skip(reason="Host fs cannot set timestamp to required value.")
mtime_ns = os.stat(tmp_pathplus / TESTFN).st_mtime_ns
if mtime_ns != (4386268800 * 10**9):
--
2.45.2
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-oauthlib for openSUSE:Factory checked in at 2024-08-13 13:22:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oauthlib (Old)
and /work/SRC/openSUSE:Factory/.python-oauthlib.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oauthlib"
Tue Aug 13 13:22:53 2024 rev:35 rq:1193372 version:3.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oauthlib/python-oauthlib.changes 2023-04-22 22:00:42.761306936 +0200
+++ /work/SRC/openSUSE:Factory/.python-oauthlib.new.7232/python-oauthlib.changes 2024-08-13 13:23:05.073847769 +0200
@@ -1,0 +2,6 @@
+Mon Aug 12 08:42:35 UTC 2024 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- Skip failing test with jwt 2.9.0
+ gh#oauthlib/oauthlib#877
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oauthlib.spec ++++++
--- /var/tmp/diff_new_pack.IhG0UB/_old 2024-08-13 13:23:05.837879603 +0200
+++ /var/tmp/diff_new_pack.IhG0UB/_new 2024-08-13 13:23:05.837879603 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oauthlib
#
-# 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
@@ -30,6 +30,7 @@
BuildRequires: %{python_module blinker >= 1.4}
BuildRequires: %{python_module cryptography >= 3.0.0 }
BuildRequires: %{python_module pyasn1}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -67,7 +68,9 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%pyunittest discover -v
+# Failing test with JWT 2.9.0 gh#oauthlib/oauthlib#877
+donttest="test_rsa_bad_keys"
+%pytest -k "not $donttest"
%files %{python_files}
%license LICENSE
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jaraco.packaging for openSUSE:Factory checked in at 2024-08-13 13:22:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jaraco.packaging (Old)
and /work/SRC/openSUSE:Factory/.python-jaraco.packaging.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jaraco.packaging"
Tue Aug 13 13:22:49 2024 rev:11 rq:1190159 version:10.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jaraco.packaging/python-jaraco.packaging.changes 2023-05-19 11:55:41.971324337 +0200
+++ /work/SRC/openSUSE:Factory/.python-jaraco.packaging.new.7232/python-jaraco.packaging.changes 2024-08-13 13:23:00.197644601 +0200
@@ -1,0 +2,23 @@
+Mon Jul 29 06:40:30 UTC 2024 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Update to 10.2.2:
+ * Fixed DeprecationWarning in metadata.hunt_down_url.
+ * Fixed issue in rendering non-unique keys in print-metadata.
+ * Add script for printing metadata.
+ * Add metadata.extract_email helper.
+ * Moved metadata helpers to metadata module.
+ * In extract_author, expand the logic to support multiple authors in
+ pyproject.toml form.
+ * Configure Sphinx earlier in 'config-inited', allowing other etxensions
+ to rely on the produced values.
+ * Add support for other metadata fields since pyproject.toml shuffles
+ things around.
+ * Add metadata.load for loading metadata from a source dir with support
+ for a BUILD_ENVIRONMENT setting. Set BUILD_ENVIRONMENT=current to bypass
+ isolation when loading metadata.
+ * Deprecated use of environment variable for isolated builds.
+ * Add sidebar-links directive.
+ * Require Python 3.8 or later.
+- Skip two tests that are impacted by a Pytest bug.
+
+-------------------------------------------------------------------
Old:
----
jaraco.packaging-9.2.0.tar.gz
New:
----
jaraco_packaging-10.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jaraco.packaging.spec ++++++
--- /var/tmp/diff_new_pack.GQmdn4/_old 2024-08-13 13:23:01.549700935 +0200
+++ /var/tmp/diff_new_pack.GQmdn4/_new 2024-08-13 13:23:01.549700935 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jaraco.packaging
#
-# 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
@@ -18,16 +18,15 @@
%{?sle15_python_module_pythons}
Name: python-jaraco.packaging
-Version: 9.2.0
+Version: 10.2.2
Release: 0
Summary: Supplement packaging Python releases
License: MIT
URL: https://github.com/jaraco/jaraco.packaging
-Source: https://files.pythonhosted.org/packages/source/j/jaraco.packaging/jaraco.pa…
+Source: https://files.pythonhosted.org/packages/source/j/jaraco.packaging/jaraco_pa…
Source10: https://files.pythonhosted.org/packages/py3/s/sampleproject/sampleproject-3…
-BuildRequires: %{python_module base >= 3.7}
+BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module build}
-BuildRequires: %{python_module importlib-metadata if %python-version < 3.8}
BuildRequires: %{python_module jaraco.context}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 56}
@@ -37,16 +36,18 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
# SECTION test
+BuildRequires: %{python_module domdf-python-tools}
+BuildRequires: %{python_module Sphinx}
+BuildRequires: %{python_module docutils}
BuildRequires: %{python_module pytest}
BuildRequires: ca-certificates
# /SECTION
+Requires: python-Sphinx
Requires: python-build
+Requires: python-domdf-python-tools
Requires: python-jaraco.context
# From build[virtualenv]
Requires: python-virtualenv >= 20
-%if 0%{?python_version_nodots} < 38
-Requires: python-importlib-metadata
-%endif
BuildArch: noarch
%python_subpackages
@@ -54,7 +55,7 @@
Tools to supplement packaging Python releases.
%prep
-%autosetup -p1 -n jaraco.packaging-%{version}
+%autosetup -p1 -n jaraco_packaging-%{version}
rm -rf jaraco.packaging.egg-info
%build
@@ -66,12 +67,13 @@
%check
export PIP_FIND_LINKS=$(dirname %{SOURCE10})
-%pytest
+# Broken by https://github.com/pytest-dev/pytest/issues/12303
+%pytest -k 'not (packaging.metadata.hunt_down_url or packaging.print-metadata.main)'
%files %{python_files}
%license LICENSE
-%doc docs/*.rst CHANGES.rst README.rst
-%{python_sitelib}/jaraco.packaging-%{version}*-info
+%doc docs/*.rst NEWS.rst README.rst
+%{python_sitelib}/jaraco.packaging-%{version}.dist-info
%dir %{python_sitelib}/jaraco
%{python_sitelib}/jaraco/packaging/
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package lib2geom for openSUSE:Factory checked in at 2024-08-13 13:22:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lib2geom (Old)
and /work/SRC/openSUSE:Factory/.lib2geom.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lib2geom"
Tue Aug 13 13:22:48 2024 rev:7 rq:1193469 version:1.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/lib2geom/lib2geom.changes 2023-11-24 23:34:46.935411545 +0100
+++ /work/SRC/openSUSE:Factory/.lib2geom.new.7232/lib2geom.changes 2024-08-13 13:22:58.277564600 +0200
@@ -1,0 +2,7 @@
+Fri Aug 9 11:24:22 UTC 2024 - Filip Kastl <filip.kastl(a)suse.com>
+
+- Add skip_failing_tests_gcc14.diff to fix more instable
+ intersection tests. This allows the 32bit version of the package
+ to be built with GCC14.
+
+-------------------------------------------------------------------
New:
----
skip_failing_tests_gcc14.diff
BETA DEBUG BEGIN:
New:
- Add skip_failing_tests_gcc14.diff to fix more instable
intersection tests. This allows the 32bit version of the package
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lib2geom.spec ++++++
--- /var/tmp/diff_new_pack.DgHkMm/_old 2024-08-13 13:22:59.957634601 +0200
+++ /var/tmp/diff_new_pack.DgHkMm/_new 2024-08-13 13:22:59.961634767 +0200
@@ -1,7 +1,7 @@
#
# spec file for package lib2geom
#
-# 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
@@ -34,6 +34,7 @@
Patch1: fix-pkgconfig-libdir-path.patch
# PATCH-FIX-UPSTREAM fix instable tests, https://gitlab.com/inkscape/lib2geom/-/issues/67
Patch2: skip_failing_tests.diff
+Patch3: skip_failing_tests_gcc14.diff
BuildRequires: cmake >= 2.6
BuildRequires: gcc-c++
BuildRequires: glib2
++++++ skip_failing_tests_gcc14.diff ++++++
Index: lib2geom-1.3/tests/ellipse-test.cpp
===================================================================
--- lib2geom-1.3.orig/tests/ellipse-test.cpp
+++ lib2geom-1.3/tests/ellipse-test.cpp
@@ -208,8 +208,8 @@ TEST(EllipseTest, EllipseIntersection) {
e1.set(Point(300, 300), Point(212, 70), -0.785);
e2.set(Point(250, 300), Point(230, 90), 1.321);
xs = e1.intersect(e2);
- EXPECT_EQ(xs.size(), 4ul);
- EXPECT_intersections_valid(e1, e2, xs, 4e-10);
+ //EXPECT_EQ(xs.size(), 4ul);
+ //EXPECT_intersections_valid(e1, e2, xs, 4e-10);
e1.set(Point(0, 0), Point(1, 1), 0);
e2.set(Point(0, 1), Point(1, 1), 0);
@@ -270,9 +270,9 @@ TEST(EllipseTest, EllipseIntersection) {
e1.set({4, 3}, {5, 5}, 0); // Passes through (0, 0), center on the line y = 0.75 x
e2.set({8, 6}, {10, 10}, 0); // Also passes through (0, 0), center on the same line.
xs = e1.intersect(e2);
- ASSERT_GT(xs.size(), 0);
+ //ASSERT_GT(xs.size(), 0);
//EXPECT_intersections_valid(e1, e2, xs, 1e-6);
- EXPECT_TRUE(are_near(xs[0].point(), Point(0, 0)));
+ //EXPECT_TRUE(are_near(xs[0].point(), Point(0, 0)));
}
TEST(EllipseTest, BezierIntersection) {
1
0