libobs: Add max_luminance to obs_source_frame

Used in situations where source luminance is greater than HDR nominal
peak setting to avoid clipping by applying BT.2408 maxRGB EETF.
This commit is contained in:
jpark37
2022-05-22 01:19:17 -07:00
committed by Jim
parent 235e025570
commit 11da542a0d
6 changed files with 64 additions and 36 deletions

View File

@@ -316,7 +316,7 @@ static void render_convert_texture(struct obs_core_video *video,
gs_eparam_t *height_i = gs_effect_get_param_by_name(effect, "height_i");
gs_eparam_t *sdr_white_nits_over_maximum = gs_effect_get_param_by_name(
effect, "sdr_white_nits_over_maximum");
gs_eparam_t *hlg_lw = gs_effect_get_param_by_name(effect, "hlg_lw");
gs_eparam_t *hdr_lw = gs_effect_get_param_by_name(effect, "hdr_lw");
struct vec4 vec0, vec1, vec2;
vec4_set(&vec0, video->color_matrix[4], video->color_matrix[5],
@@ -336,7 +336,7 @@ static void render_convert_texture(struct obs_core_video *video,
gs_effect_set_texture(image, texture);
gs_effect_set_vec4(color_vec0, &vec0);
gs_effect_set_float(sdr_white_nits_over_maximum, multiplier);
gs_effect_set_float(hlg_lw, hdr_nominal_peak_level);
gs_effect_set_float(hdr_lw, hdr_nominal_peak_level);
render_convert_plane(effect, convert_textures[0],
video->conversion_techs[0]);
@@ -350,7 +350,7 @@ static void render_convert_texture(struct obs_core_video *video,
video->conversion_height_i);
gs_effect_set_float(sdr_white_nits_over_maximum,
multiplier);
gs_effect_set_float(hlg_lw, hdr_nominal_peak_level);
gs_effect_set_float(hdr_lw, hdr_nominal_peak_level);
render_convert_plane(effect, convert_textures[1],
video->conversion_techs[1]);
@@ -363,7 +363,7 @@ static void render_convert_texture(struct obs_core_video *video,
video->conversion_height_i);
gs_effect_set_float(sdr_white_nits_over_maximum,
multiplier);
gs_effect_set_float(hlg_lw,
gs_effect_set_float(hdr_lw,
hdr_nominal_peak_level);
render_convert_plane(
effect, convert_textures[2],