commit: ba9fd06e16b66a66edab1c7d0b36b1bf896c7466 Author: Brahmajit Das <listout <AT> listout <DOT> xyz> AuthorDate: Fri Aug 29 19:05:44 2025 +0000 Commit: Jimi Huotari <chiitoo <AT> gentoo <DOT> org> CommitDate: Sun Aug 31 14:41:31 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ba9fd06e
media-video/obs-studio: Fix build with >=media-video/ffmpeg-8.x Closes: https://bugs.gentoo.org/961699 Closes: https://github.com/gentoo/gentoo/pull/43600 Signed-off-by: Brahmajit Das <listout <AT> listout.xyz> Signed-off-by: Jimi Huotari <chiitoo <AT> gentoo.org> .../obs-studio-31.1.2-fix-build-with-ffmpeg8.patch | 115 +++++++++++++++++++++ media-video/obs-studio/obs-studio-31.1.2.ebuild | 7 +- 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/media-video/obs-studio/files/obs-studio-31.1.2-fix-build-with-ffmpeg8.patch b/media-video/obs-studio/files/obs-studio-31.1.2-fix-build-with-ffmpeg8.patch new file mode 100644 index 000000000000..aeecbf0f2268 --- /dev/null +++ b/media-video/obs-studio/files/obs-studio-31.1.2-fix-build-with-ffmpeg8.patch @@ -0,0 +1,115 @@ +https://github.com/obsproject/obs-studio/commit/69162b12ecadb3edaca0529b34da93b4df606c11 +From: Brahmajit Das <[email protected]> +Date: Sat, 23 Aug 2025 20:32:00 +0530 +Subject: [PATCH] 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]> +--- a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c ++++ b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c +@@ -276,9 +276,9 @@ static bool vaapi_update(void *data, obs_data_t *settings) + + #ifdef ENABLE_HEVC + if (enc->codec == CODEC_HEVC) { +- if ((profile == FF_PROFILE_HEVC_MAIN) && (info.format == VIDEO_FORMAT_P010)) { ++ 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 +@@ -853,14 +853,14 @@ static void vaapi_defaults_internal(obs_data_t *settings, enum codec_type codec) + obs_data_set_default_string(settings, "vaapi_device", device); + #ifdef ENABLE_HEVC + if (codec == CODEC_HEVC) +- obs_data_set_default_int(settings, "profile", FF_PROFILE_HEVC_MAIN); ++ obs_data_set_default_int(settings, "profile", AV_PROFILE_HEVC_MAIN); + else + #endif + if (codec == CODEC_H264) +- obs_data_set_default_int(settings, "profile", FF_PROFILE_H264_HIGH); ++ obs_data_set_default_int(settings, "profile", 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); ++ obs_data_set_default_int(settings, "profile", 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); +@@ -914,33 +914,33 @@ static bool vaapi_device_modified(obs_properties_t *ppts, obs_property_t *p, obs + 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; +@@ -1098,21 +1098,21 @@ static obs_properties_t *vaapi_properties_internal(enum codec_type codec) + list = obs_properties_add_list(props, "profile", obs_module_text("Profile"), 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, "Main10", FF_PROFILE_HEVC_MAIN_10); ++ obs_property_list_add_int(list, "Main", AV_PROFILE_HEVC_MAIN); ++ obs_property_list_add_int(list, "Main10", 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); ++ obs_property_list_add_int(list, "Constrained Baseline", 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); + + 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); diff --git a/media-video/obs-studio/obs-studio-31.1.2.ebuild b/media-video/obs-studio/obs-studio-31.1.2.ebuild index ad2a388019f2..7063ba9b31f9 100644 --- a/media-video/obs-studio/obs-studio-31.1.2.ebuild +++ b/media-video/obs-studio/obs-studio-31.1.2.ebuild @@ -159,6 +159,11 @@ QA_PREBUILT=" usr/lib*/obs-plugins/swiftshader/libGLESv2.so " +PATCHES=( + # Not needed for >31.1.2, merged upstream + "${FILESDIR}/${PN}-31.1.2-fix-build-with-ffmpeg8.patch" +) + pkg_setup() { use lua && lua-single_pkg_setup use python && python-single-r1_pkg_setup @@ -179,8 +184,6 @@ src_unpack() { } src_prepare() { - default - # -Werror=lto-type-mismatch # https://bugs.gentoo.org/867250 # https://github.com/obsproject/obs-studio/issues/8988
