public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/libopenshot] f45: Updated to 0.7.0 (resolves rhbz#2449868)
@ 2026-09-18 17:05 Dominik 'Rathann' Mierzejewski
0 siblings, 0 replies; only message in thread
From: Dominik 'Rathann' Mierzejewski @ 2026-09-18 17:05 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/libopenshot
Branch : f45
Commit : d1a4e4d3679b8025ff197f74c9f6ebed291434ce
Author : Dominik 'Rathann' Mierzejewski <dominik@greysector.net>
Date : 2026-08-20T13:04:02+02:00
Stats : +154/-48 in 5 file(s)
URL : https://src.fedoraproject.org/rpms/libopenshot/c/d1a4e4d3679b8025ff197f74c9f6ebed291434ce?branch=f45
Log:
Updated to 0.7.0 (resolves rhbz#2449868)
- Dropped obsolete patch
- Fixed build with FFmpeg 9
- Skipped some more tests requiring openh264
---
diff --git a/.gitignore b/.gitignore
index a3dc768..39a0b41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/libopenshot-0.3.3.tar.gz
/libopenshot-0.4.0.tar.gz
/libopenshot-0.5.0.tar.gz
+/libopenshot-0.7.0.tar.gz
diff --git a/libopenshot-0.7.0-ffmpeg9.patch b/libopenshot-0.7.0-ffmpeg9.patch
new file mode 100644
index 0000000..f151c07
--- /dev/null
+++ b/libopenshot-0.7.0-ffmpeg9.patch
@@ -0,0 +1,134 @@
+--- a/src/FFmpegWriter.cpp 2026-04-03 01:34:37.000000000 +0200
++++ b/src/FFmpegWriter.cpp 2026-08-13 20:03:33.389455317 +0200
+@@ -1042,38 +1042,60 @@
+ #endif
+
+ // Set valid sample rate (or throw error)
+- if (codec->supported_samplerates) {
+- int i;
+- for (i = 0; codec->supported_samplerates[i] != 0; i++)
+- if (info.sample_rate == codec->supported_samplerates[i]) {
+- // Set the valid sample rate
+- c->sample_rate = info.sample_rate;
+- break;
+- }
+- if (codec->supported_samplerates[i] == 0)
+- throw InvalidSampleRate("An invalid sample rate was detected for this codec.", path);
+- } else
+- // Set sample rate
+- c->sample_rate = info.sample_rate;
++ // AVCodec.supported_samplerates removed in FFmpeg 9+
++ {
++ const int *supported_samplerates = NULL;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
++ if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_RATE, 0,
++ (const void **)&supported_samplerates, NULL) < 0)
++ supported_samplerates = NULL;
++#else
++ supported_samplerates = codec->supported_samplerates;
++#endif
++ if (supported_samplerates) {
++ int i;
++ for (i = 0; supported_samplerates[i] != 0; i++)
++ if (info.sample_rate == supported_samplerates[i]) {
++ // Set the valid sample rate
++ c->sample_rate = info.sample_rate;
++ break;
++ }
++ if (supported_samplerates[i] == 0)
++ throw InvalidSampleRate("An invalid sample rate was detected for this codec.", path);
++ } else
++ // Set sample rate
++ c->sample_rate = info.sample_rate;
++ }
+
+ uint64_t channel_layout = info.channel_layout;
+ #if HAVE_CH_LAYOUT
+ // Set a valid number of channels (or throw error)
++ // AVCodec.ch_layouts removed in FFmpeg 9+
+ AVChannelLayout ch_layout;
+ av_channel_layout_from_mask(&ch_layout, info.channel_layout);
+- if (codec->ch_layouts) {
+- int i;
+- for (i = 0; av_channel_layout_check(&codec->ch_layouts[i]); i++)
+- if (av_channel_layout_compare(&ch_layout, &codec->ch_layouts[i])) {
+- // Set valid channel layout
+- av_channel_layout_copy(&c->ch_layout, &ch_layout);
+- break;
+- }
+- if (!av_channel_layout_check(&codec->ch_layouts[i]))
+- throw InvalidChannels("An invalid channel layout was detected (i.e. MONO / STEREO).", path);
+- } else
+- // Set valid channel layout
+- av_channel_layout_copy(&c->ch_layout, &ch_layout);
++ {
++ const AVChannelLayout *ch_layouts = NULL;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
++ if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_CHANNEL_LAYOUT, 0,
++ (const void **)&ch_layouts, NULL) < 0)
++ ch_layouts = NULL;
++#else
++ ch_layouts = codec->ch_layouts;
++#endif
++ if (ch_layouts) {
++ int i;
++ for (i = 0; av_channel_layout_check(&ch_layouts[i]); i++)
++ if (av_channel_layout_compare(&ch_layout, &ch_layouts[i])) {
++ // Set valid channel layout
++ av_channel_layout_copy(&c->ch_layout, &ch_layout);
++ break;
++ }
++ if (!av_channel_layout_check(&ch_layouts[i]))
++ throw InvalidChannels("An invalid channel layout was detected (i.e. MONO / STEREO).", path);
++ } else
++ // Set valid channel layout
++ av_channel_layout_copy(&c->ch_layout, &ch_layout);
++ }
+ #else
+ // Set a valid number of channels (or throw error)
+ if (codec->channel_layouts) {
+@@ -1092,11 +1114,22 @@
+ #endif
+
+ // Choose a valid sample_fmt
+- if (codec->sample_fmts) {
+- for (int i = 0; codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) {
+- // Set sample format to 1st valid format (and then exit loop)
+- c->sample_fmt = codec->sample_fmts[i];
+- break;
++ // AVCodec.sample_fmts removed in FFmpeg 9+
++ {
++ const enum AVSampleFormat *sample_fmts = NULL;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
++ if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0,
++ (const void **)&sample_fmts, NULL) < 0)
++ sample_fmts = NULL;
++#else
++ sample_fmts = codec->sample_fmts;
++#endif
++ if (sample_fmts) {
++ for (int i = 0; sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) {
++ // Set sample format to 1st valid format (and then exit loop)
++ c->sample_fmt = sample_fmts[i];
++ break;
++ }
+ }
+ }
+ if (c->sample_fmt == AV_SAMPLE_FMT_NONE) {
+@@ -1297,7 +1330,15 @@
+ #endif
+
+ // Find all supported pixel formats for this codec
+- const PixelFormat *supported_pixel_formats = codec->pix_fmts;
++ // AVCodec.pix_fmts removed in FFmpeg 9+
++ const PixelFormat *supported_pixel_formats = NULL;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
++ if (avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_PIX_FORMAT, 0,
++ (const void **)&supported_pixel_formats, NULL) < 0)
++ supported_pixel_formats = NULL;
++#else
++ supported_pixel_formats = codec->pix_fmts;
++#endif
+ while (supported_pixel_formats != NULL && *supported_pixel_formats != PIX_FMT_NONE) {
+ // Assign the 1st valid pixel format (if one is missing)
+ if (c->pix_fmt == PIX_FMT_NONE)
diff --git a/libopenshot-ffmpeg8.patch b/libopenshot-ffmpeg8.patch
deleted file mode 100644
index 8d0121b..0000000
--- a/libopenshot-ffmpeg8.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -up libopenshot-0.5.0/src/FFmpegWriter.cpp.ffmpeg8 libopenshot-0.5.0/src/FFmpegWriter.cpp
---- libopenshot-0.5.0/src/FFmpegWriter.cpp.ffmpeg8 2025-12-19 15:17:22.913806415 +0100
-+++ libopenshot-0.5.0/src/FFmpegWriter.cpp 2025-12-19 21:52:52.367096338 +0100
-@@ -1511,7 +1511,7 @@ void FFmpegWriter::open_video(AVFormatCo
- switch (video_codec_ctx->codec_id) {
- case AV_CODEC_ID_H264:
- video_codec_ctx->max_b_frames = 0; // At least this GPU doesn't support b-frames
-- video_codec_ctx->profile = FF_PROFILE_H264_BASELINE | FF_PROFILE_H264_CONSTRAINED;
-+ video_codec_ctx->profile = AV_PROFILE_H264_BASELINE | AV_PROFILE_H264_CONSTRAINED;
- av_opt_set(video_codec_ctx->priv_data, "preset", "slow", 0);
- av_opt_set(video_codec_ctx->priv_data, "tune", "zerolatency", 0);
- av_opt_set(video_codec_ctx->priv_data, "vprofile", "baseline", AV_OPT_SEARCH_CHILDREN);
-@@ -2390,6 +2390,10 @@ void FFmpegWriter::AddSphericalMetadata(
- map->pitch = static_cast<int32_t>(pitch_deg * (1 << 16));
- map->roll = static_cast<int32_t>(roll_deg * (1 << 16));
-
-+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
- av_stream_add_side_data(video_st, AV_PKT_DATA_SPHERICAL, reinterpret_cast<uint8_t*>(map), sd_size);
-+#else
-+ av_packet_side_data_add(&video_st->codecpar->coded_side_data, &video_st->codecpar->nb_coded_side_data, AV_PKT_DATA_SPHERICAL, reinterpret_cast<uint8_t *>(map), sd_size, 0);
-+#endif
- #endif
- }
-diff -up libopenshot-0.5.0/src/FFmpegReader.cpp.ffmpeg8 libopenshot-0.5.0/src/FFmpegReader.cpp
---- libopenshot-0.5.0/src/FFmpegReader.cpp.ffmpeg8 2025-12-16 06:34:48.000000000 +0100
-+++ libopenshot-0.5.0/src/FFmpegReader.cpp 2025-12-19 21:57:59.508905965 +0100
-@@ -567,8 +567,13 @@ void FFmpegReader::Open() {
- AVStream* st = pFormatCtx->streams[i];
- if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
- // Only inspect the first video stream
-+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
- for (int j = 0; j < st->nb_side_data; j++) {
- AVPacketSideData *sd = &st->side_data[j];
-+#else
-+ for (int j = 0; j < st->codecpar->nb_coded_side_data; j++) {
-+ AVPacketSideData *sd = &st->codecpar->coded_side_data[j];
-+#endif
-
- // Handle rotation metadata (unchanged)
- if (sd->type == AV_PKT_DATA_DISPLAYMATRIX &&
diff --git a/libopenshot.spec b/libopenshot.spec
index 3973b78..594ade1 100644
--- a/libopenshot.spec
+++ b/libopenshot.spec
@@ -1,7 +1,7 @@
# Try opting-out of LTO, due to test failures
%define _lto_cflags %{nil}
-%global soversion 28
+%global soversion 30
%bcond openh264 0
@@ -33,13 +33,18 @@ FFmpegReader:Duration_Strategy_Audio_Preferred|\\\
FFmpegReader:Duration_And_Length|\\\
FFmpegReader:Duration_Strategy_Video_Preferred|\\\
FFmpegReader:Duration_Strategy_Longest_Stream|\\\
+FFmpegReader:HardwareDecodeSuccessful_IsFalse_WhenHardwareDecodeIsDisabled|\\\
FFmpegWriter:DisplayInfo|\\\
+FFmpegWriter:SizeOrdering_vp9_CRF|\\\
+FFmpegWriter:SizeOrdering_x264_CRF|\\\
FFmpegWriter:Webm|\\\
FFmpegWriter:Gif|\\\
Frame:Convert_Image|\\\
Frame:Data_Access|\\\
+FrameMapper:concurrent_change_mapping_and_getframe_is_safe|\\\
KeyFrame:AttachToObject|\\\
Timeline:ApplyJSONDiff Update Reader Info|\\\
+Timeline:GetMaxFrame|\\\
Timeline:Multi-threaded Timeline Add/Remove Clip|\\\
Timeline:Multi-threaded Timeline GetFrame|\\\
VideoCacheThread:prefetchWindow: interrupt on userSeeked flag|\\\
@@ -60,17 +65,17 @@ CVOutline:Outline_Tests
%endif
Name: libopenshot
-Version: 0.5.0
-Release: 9%{?dist}
+Version: 0.7.0
+Release: 1%{?dist}
Summary: Library for creating and editing videos
# See .reuse/dep5 for details
License: LGPL-3.0-or-later and BSD-3-Clause
URL: http://www.openshot.org/
Source0: https://github.com/OpenShot/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
-# Fix build with FFmpeg 8
-# https://github.com/OpenShot/libopenshot/pull/1018
-Patch0: %{name}-ffmpeg8.patch
+# Fix build with FFmpeg 9
+# https://github.com/OpenShot/libopenshot/issues/1083
+Patch0: https://github.com/OpenMandrivaAssociation/libopenshot/raw/refs/heads/master/libopenshot-0.7.0-ffmpeg9.patch
# Fix babl detection
Patch1: %{name}-fix-babl-detection.patch
@@ -96,7 +101,7 @@ BuildRequires: unittest-cpp-devel
BuildRequires: cppzmq-devel
BuildRequires: zeromq-devel
BuildRequires: jsoncpp-devel
-BuildRequires: libopenshot-audio-devel >= %{version}
+BuildRequires: libopenshot-audio-devel >= 0.6.0
BuildRequires: catch-devel
BuildRequires: python3-distutils-extra
BuildRequires: python3-setuptools
@@ -177,6 +182,12 @@ export QT_QPA_PLATFORM=offscreen
%{ruby_vendorarchdir}/openshot.so
%changelog
+* Thu Aug 20 2026 Dominik Mierzejewski <dominik@greysector.net> - 0.7.0-1
+- Updated to 0.7.0 (resolves rhbz#2449868)
+- Dropped obsolete patch
+- Fixed build with FFmpeg 9
+- Skipped some more tests requiring openh264
+
* Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 0.5.0-9
- Rebuilt for Python 3.15.0b4 ABI change
diff --git a/sources b/sources
index 40ccbba..0ab61d7 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libopenshot-0.5.0.tar.gz) = 6a19717ed9f1602e0c3737a69b7664de0a36f837e2cbcf3d9275b28001306ea75bc0cd45306221d5134913ac1173ee764e74a321e07045eca177d52355a70dd9
+SHA512 (libopenshot-0.7.0.tar.gz) = d36ad17e65534c890358ea7a12b039e94296327341835f39c5d76d257f5be5e8f874124b51005cd710cfc668a44dd898f63de2c674544d30b5a9d012273f56ce
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-18 17:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 17:05 [rpms/libopenshot] f45: Updated to 0.7.0 (resolves rhbz#2449868) Dominik 'Rathann' Mierzejewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox