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 <listout@listout.xyz>
This commit is contained in:
Brahmajit Das
2025-08-23 20:32:00 +05:30
committed by Ryan Foster
parent 672328f120
commit 69162b12ec
+19 -19
View File
@@ -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);