Control: tags 1115044 + patch
Control: tags 1115044 + pending

Dear maintainer,

I've prepared an NMU for obs-studio (versioned as 30.2.3+dfsg-3.2) and 
uploaded it to DELAYED/7. Please feel free to tell me if I should cancel it.

cu
Adrian
diffstat for obs-studio-30.2.3+dfsg obs-studio-30.2.3+dfsg

 changelog                                                       |    7 
 patches/0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch |  130 ++++++++++
 patches/series                                                  |    1 
 3 files changed, 138 insertions(+)

diff -Nru obs-studio-30.2.3+dfsg/debian/changelog obs-studio-30.2.3+dfsg/debian/changelog
--- obs-studio-30.2.3+dfsg/debian/changelog	2025-10-05 20:35:32.000000000 +0300
+++ obs-studio-30.2.3+dfsg/debian/changelog	2026-01-03 19:53:40.000000000 +0200
@@ -1,3 +1,10 @@
+obs-studio (30.2.3+dfsg-3.2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Backport upstream fix for FTBFS with FFmpeg 8. (Closes: #1115044)
+
+ -- Adrian Bunk <[email protected]>  Sat, 03 Jan 2026 19:53:40 +0200
+
 obs-studio (30.2.3+dfsg-3.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru obs-studio-30.2.3+dfsg/debian/patches/0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch obs-studio-30.2.3+dfsg/debian/patches/0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch
--- obs-studio-30.2.3+dfsg/debian/patches/0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch	1970-01-01 02:00:00.000000000 +0200
+++ obs-studio-30.2.3+dfsg/debian/patches/0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch	2026-01-03 19:49:10.000000000 +0200
@@ -0,0 +1,130 @@
+From ba6ce20e311dcf4e34e39f48358c879fee042c06 Mon Sep 17 00:00:00 2001
+From: Brahmajit Das <[email protected]>
+Date: Sat, 23 Aug 2025 20:32:00 +0530
+Subject: obs-ffmpeg: Fix build with FFMPEG 8 and above
+
+With commit https://github.com/FFmpeg/FFmpeg/commit/822432769868 FFMPEG
+has removed almost all of the FF_API_FF_PROFILE_LEVEL related defines.
+They were deprecated since 2023-09-06. This results in build failures.
+
+This is first found on Gentoo with FFMPEG pre-release version.
+
+Downstream-bug: https://bugs.gentoo.org/961699
+Signed-off-by: Brahmajit Das <[email protected]>
+---
+ plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c | 38 +++++++++++++--------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c
+index 96d08f29f..dee64955f 100644
+--- a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c
++++ b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c
+@@ -290,10 +290,10 @@ static bool vaapi_update(void *data, obs_data_t *settings)
+ 
+ #ifdef ENABLE_HEVC
+ 	if (enc->codec == CODEC_HEVC) {
+-		if ((profile == FF_PROFILE_HEVC_MAIN) &&
++		if ((profile == AV_PROFILE_HEVC_MAIN) &&
+ 		    (info.format == VIDEO_FORMAT_P010)) {
+ 			warn("Forcing Main10 for P010");
+-			profile = FF_PROFILE_HEVC_MAIN_10;
++			profile = AV_PROFILE_HEVC_MAIN_10;
+ 		}
+ 	}
+ #endif
+@@ -916,16 +916,16 @@ static void vaapi_defaults_internal(obs_data_t *settings, enum codec_type codec)
+ #ifdef ENABLE_HEVC
+ 	if (codec == CODEC_HEVC)
+ 		obs_data_set_default_int(settings, "profile",
+-					 FF_PROFILE_HEVC_MAIN);
++					 AV_PROFILE_HEVC_MAIN);
+ 	else
+ #endif
+ 		if (codec == CODEC_H264)
+ 		obs_data_set_default_int(settings, "profile",
+-					 FF_PROFILE_H264_HIGH);
++					 AV_PROFILE_H264_HIGH);
+ 	else if (codec == CODEC_AV1)
+ 		obs_data_set_default_int(settings, "profile",
+-					 FF_PROFILE_AV1_MAIN);
+-	obs_data_set_default_int(settings, "level", FF_LEVEL_UNKNOWN);
++					 AV_PROFILE_AV1_MAIN);
++	obs_data_set_default_int(settings, "level", AV_LEVEL_UNKNOWN);
+ 	obs_data_set_default_int(settings, "bitrate", 2500);
+ 	obs_data_set_default_int(settings, "keyint_sec", 0);
+ 	obs_data_set_default_int(settings, "bf", 0);
+@@ -981,33 +981,33 @@ static bool vaapi_device_modified(obs_properties_t *ppts, obs_property_t *p,
+ 		goto fail;
+ 
+ 	switch (profile) {
+-	case FF_PROFILE_H264_CONSTRAINED_BASELINE:
++	case AV_PROFILE_H264_CONSTRAINED_BASELINE:
+ 		if (!vaapi_display_h264_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileH264ConstrainedBaseline;
+ 		break;
+-	case FF_PROFILE_H264_MAIN:
++	case AV_PROFILE_H264_MAIN:
+ 		if (!vaapi_display_h264_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileH264Main;
+ 		break;
+-	case FF_PROFILE_H264_HIGH:
++	case AV_PROFILE_H264_HIGH:
+ 		if (!vaapi_display_h264_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileH264High;
+ 		break;
+-	case FF_PROFILE_AV1_MAIN:
++	case AV_PROFILE_AV1_MAIN:
+ 		if (!vaapi_display_av1_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileAV1Profile0;
+ 		break;
+ #ifdef ENABLE_HEVC
+-	case FF_PROFILE_HEVC_MAIN:
++	case AV_PROFILE_HEVC_MAIN:
+ 		if (!vaapi_display_hevc_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileHEVCMain;
+ 		break;
+-	case FF_PROFILE_HEVC_MAIN_10:
++	case AV_PROFILE_HEVC_MAIN_10:
+ 		if (!vaapi_display_hevc_supported(va_dpy, device))
+ 			goto fail;
+ 		profile = VAProfileHEVCMain10;
+@@ -1181,16 +1181,16 @@ static obs_properties_t *vaapi_properties_internal(enum codec_type codec)
+ 				       OBS_COMBO_TYPE_LIST,
+ 				       OBS_COMBO_FORMAT_INT);
+ 	if (codec == CODEC_HEVC) {
+-		obs_property_list_add_int(list, "Main", FF_PROFILE_HEVC_MAIN);
++		obs_property_list_add_int(list, "Main", AV_PROFILE_HEVC_MAIN);
+ 		obs_property_list_add_int(list, "Main10",
+-					  FF_PROFILE_HEVC_MAIN_10);
++					  AV_PROFILE_HEVC_MAIN_10);
+ 	} else if (codec == CODEC_H264) {
+ 		obs_property_list_add_int(list, "Constrained Baseline",
+-					  FF_PROFILE_H264_CONSTRAINED_BASELINE);
+-		obs_property_list_add_int(list, "Main", FF_PROFILE_H264_MAIN);
+-		obs_property_list_add_int(list, "High", FF_PROFILE_H264_HIGH);
++					  AV_PROFILE_H264_CONSTRAINED_BASELINE);
++		obs_property_list_add_int(list, "Main", AV_PROFILE_H264_MAIN);
++		obs_property_list_add_int(list, "High", AV_PROFILE_H264_HIGH);
+ 	} else if (codec == CODEC_AV1) {
+-		obs_property_list_add_int(list, "Main", FF_PROFILE_AV1_MAIN);
++		obs_property_list_add_int(list, "Main", AV_PROFILE_AV1_MAIN);
+ 	}
+ 
+ 	obs_property_set_modified_callback(list, vaapi_device_modified);
+@@ -1198,7 +1198,7 @@ static obs_properties_t *vaapi_properties_internal(enum codec_type codec)
+ 	list = obs_properties_add_list(props, "level", obs_module_text("Level"),
+ 				       OBS_COMBO_TYPE_LIST,
+ 				       OBS_COMBO_FORMAT_INT);
+-	obs_property_list_add_int(list, "Auto", FF_LEVEL_UNKNOWN);
++	obs_property_list_add_int(list, "Auto", AV_LEVEL_UNKNOWN);
+ 	if (codec == CODEC_H264) {
+ 		obs_property_list_add_int(list, "3.0", 30);
+ 		obs_property_list_add_int(list, "3.1", 31);
+-- 
+2.30.2
+
diff -Nru obs-studio-30.2.3+dfsg/debian/patches/series obs-studio-30.2.3+dfsg/debian/patches/series
--- obs-studio-30.2.3+dfsg/debian/patches/series	2025-10-05 20:35:32.000000000 +0300
+++ obs-studio-30.2.3+dfsg/debian/patches/series	2026-01-03 19:53:31.000000000 +0200
@@ -16,3 +16,4 @@
 linux-v4l2-Save-device-by-id-or-path.patch
 0017-Fix-virtual-cam.patch
 0001-deps-json11-Fix-compile-error-on-GCC-15.patch
+0001-obs-ffmpeg-Fix-build-with-FFMPEG-8-and-above.patch

Reply via email to