From 04d7ff585420d7dc3e7850884fe597bbe002cd6f Mon Sep 17 00:00:00 2001 From: Douglas Rhine <59268455+dgcampea@users.noreply.github.com> Date: Thu, 2 Apr 2020 17:48:15 +0100 Subject: [PATCH 1/2] obs-ffmpeg: Expose VAAPI profile choices Allow choosing Constrained Baseline, Main and High. --- plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c index 4e4b460f0..b3d2415d4 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c @@ -550,6 +550,14 @@ static obs_properties_t *vaapi_properties(void *unused) obs_property_list_add_int(list, "H.264 (default)", AV_CODEC_ID_H264); + list = obs_properties_add_list(props, "profile", "Profile", + OBS_COMBO_TYPE_LIST, + OBS_COMBO_FORMAT_INT); + obs_property_list_add_int(list, "Constrained Baseline (default)", + 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); + list = obs_properties_add_list(props, "level", "Level", OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); From b216b90a5c54534b350d30ee4c2845b26f6ca02c Mon Sep 17 00:00:00 2001 From: Douglas Rhine <59268455+dgcampea@users.noreply.github.com> Date: Thu, 2 Apr 2020 17:59:52 +0100 Subject: [PATCH 2/2] obs-ffmpeg: Rename and add more VAAPI levels The Auto level lets the encoder decide which level to use. Furthermore, some devices allow levels beyond 4.2. Therefore, we add all levels allowed by H.264. This is of importance, since using a resolution not supported by the specified level can trigger undefined behavior on the hardware/kernel. --- plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c index b3d2415d4..9f2660a49 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c @@ -561,12 +561,16 @@ static obs_properties_t *vaapi_properties(void *unused) list = obs_properties_add_list(props, "level", "Level", OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); - obs_property_list_add_int(list, "480p30 (3.0)", 30); - obs_property_list_add_int(list, "720p30/480p60 (3.1)", 31); - obs_property_list_add_int(list, "Compatibility mode (4.0 default)", + obs_property_list_add_int(list, "Auto", FF_LEVEL_UNKNOWN); + obs_property_list_add_int(list, "3.0", 30); + obs_property_list_add_int(list, "3.1", 31); + obs_property_list_add_int(list, "4.0 (default) (Compatibility mode)", 40); - obs_property_list_add_int(list, "720p60/1080p30 (4.1)", 41); - obs_property_list_add_int(list, "1080p60 (4.2)", 42); + obs_property_list_add_int(list, "4.1", 41); + obs_property_list_add_int(list, "4.2", 42); + obs_property_list_add_int(list, "5.0", 50); + obs_property_list_add_int(list, "5.1", 51); + obs_property_list_add_int(list, "5.2", 52); list = obs_properties_add_list(props, "rate_control", obs_module_text("RateControl"),