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