libobs: Fix non-exhaustive switch statements

This commit is contained in:
PatTheMav 2023-02-16 20:53:24 +01:00 committed by Jim
parent cfa0dc573e
commit fb7a9edadc
7 changed files with 66 additions and 41 deletions

View file

@ -626,9 +626,9 @@ static inline enum gs_color_format convert_format(enum AVPixelFormat format)
return GS_BGRX;
case AV_PIX_FMT_RGBA64BE:
return GS_RGBA16;
default:
return GS_BGRX;
}
return GS_BGRX;
}
uint8_t *gs_create_texture_file_data(const char *file,

View file

@ -309,6 +309,9 @@ static enum video_colorspace collapse_space(enum video_colorspace cs)
break;
case VIDEO_CS_2100_HLG:
cs = VIDEO_CS_2100_PQ;
break;
default:
break;
}
return cs;

View file

@ -242,12 +242,10 @@ bool video_format_get_parameters(enum video_colorspace color_space,
enum video_range_type range, float matrix[16],
float range_min[3], float range_max[3])
{
uint32_t bpc = 8;
switch (color_space) {
case VIDEO_CS_2100_PQ:
case VIDEO_CS_2100_HLG:
bpc = 10;
}
uint32_t bpc = (color_space == VIDEO_CS_2100_PQ ||
color_space == VIDEO_CS_2100_HLG)
? 10
: 8;
return video_format_get_parameters_for_bpc(color_space, range, matrix,
range_min, range_max, bpc);
@ -260,7 +258,7 @@ bool video_format_get_parameters_for_format(enum video_colorspace color_space,
float range_min[3],
float range_max[3])
{
uint32_t bpc = 8;
uint32_t bpc;
switch (format) {
case VIDEO_FORMAT_I010:
case VIDEO_FORMAT_P010:
@ -271,6 +269,9 @@ bool video_format_get_parameters_for_format(enum video_colorspace color_space,
case VIDEO_FORMAT_YA2L:
bpc = 12;
break;
default:
bpc = 8;
break;
}
return video_format_get_parameters_for_bpc(color_space, range, matrix,

View file

@ -642,24 +642,19 @@ static void render_item_texture(struct obs_scene_item *item,
tech_name = "DrawUpscaleMultiply";
break;
case GS_CS_709_EXTENDED:
switch (current_space) {
case GS_CS_SRGB:
case GS_CS_SRGB_16F:
if (current_space == GS_CS_SRGB ||
current_space == GS_CS_SRGB_16F)
tech_name = "DrawUpscaleTonemap";
break;
case GS_CS_709_SCRGB:
else if (current_space == GS_CS_709_SCRGB)
tech_name = "DrawUpscaleMultiply";
}
break;
case GS_CS_709_SCRGB:
switch (current_space) {
case GS_CS_SRGB:
case GS_CS_SRGB_16F:
if (current_space == GS_CS_SRGB ||
current_space == GS_CS_SRGB_16F)
tech_name = "DrawUpscaleMultiplyTonemap";
break;
case GS_CS_709_EXTENDED:
else if (current_space == GS_CS_709_EXTENDED)
tech_name = "DrawUpscaleMultiply";
}
break;
}
} else {
switch (source_space) {
@ -669,24 +664,19 @@ static void render_item_texture(struct obs_scene_item *item,
tech_name = "DrawMultiply";
break;
case GS_CS_709_EXTENDED:
switch (current_space) {
case GS_CS_SRGB:
case GS_CS_SRGB_16F:
if (current_space == GS_CS_SRGB ||
current_space == GS_CS_SRGB_16F)
tech_name = "DrawTonemap";
break;
case GS_CS_709_SCRGB:
else if (current_space == GS_CS_709_SCRGB)
tech_name = "DrawMultiply";
}
break;
case GS_CS_709_SCRGB:
switch (current_space) {
case GS_CS_SRGB:
case GS_CS_SRGB_16F:
if (current_space == GS_CS_SRGB ||
current_space == GS_CS_SRGB_16F)
tech_name = "DrawMultiplyTonemap";
break;
case GS_CS_709_EXTENDED:
else if (current_space == GS_CS_709_EXTENDED)
tech_name = "DrawMultiply";
}
break;
}
}
@ -1524,11 +1514,9 @@ scene_video_get_color_space(void *data, size_t count,
enum gs_color_space space = GS_CS_SRGB;
struct obs_video_info ovi;
if (obs_get_video_info(&ovi)) {
switch (ovi.colorspace) {
case VIDEO_CS_2100_PQ:
case VIDEO_CS_2100_HLG:
if (ovi.colorspace == VIDEO_CS_2100_PQ ||
ovi.colorspace == VIDEO_CS_2100_HLG)
space = GS_CS_709_EXTENDED;
}
}
return space;

View file

@ -400,6 +400,9 @@ void deinterlace_render(obs_source_t *s)
case GS_CS_709_SCRGB:
tech_name = "DrawMultiply";
multiplier = obs_get_video_sdr_white_level() / 80.0f;
break;
case GS_CS_709_EXTENDED:
break;
}
break;
case GS_CS_709_SCRGB:
@ -412,6 +415,9 @@ void deinterlace_render(obs_source_t *s)
case GS_CS_709_EXTENDED:
tech_name = "DrawMultiply";
multiplier = 80.0f / obs_get_video_sdr_white_level();
break;
case GS_CS_709_SCRGB:
break;
}
}

View file

@ -2516,6 +2516,9 @@ static inline void obs_source_render_async_video(obs_source_t *source)
tech_name = "DrawMultiply";
multiplier =
obs_get_video_sdr_white_level() / 80.0f;
break;
case GS_CS_709_EXTENDED:
break;
}
break;
case GS_CS_709_SCRGB:
@ -2531,6 +2534,9 @@ static inline void obs_source_render_async_video(obs_source_t *source)
tech_name = "DrawMultiply";
multiplier =
80.0f / obs_get_video_sdr_white_level();
break;
case GS_CS_709_SCRGB:
break;
}
}
@ -2655,6 +2661,11 @@ static void source_render(obs_source_t *source, gs_effect_t *effect)
case GS_CS_709_SCRGB:
convert_tech = "DrawMultiply";
multiplier = obs_get_video_sdr_white_level() / 80.0f;
break;
case GS_CS_SRGB:
break;
case GS_CS_SRGB_16F:
break;
}
break;
case GS_CS_709_EXTENDED:
@ -2666,6 +2677,9 @@ static void source_render(obs_source_t *source, gs_effect_t *effect)
case GS_CS_709_SCRGB:
convert_tech = "DrawMultiply";
multiplier = obs_get_video_sdr_white_level() / 80.0f;
break;
case GS_CS_709_EXTENDED:
break;
}
break;
case GS_CS_709_SCRGB:
@ -2678,6 +2692,9 @@ static void source_render(obs_source_t *source, gs_effect_t *effect)
case GS_CS_709_EXTENDED:
convert_tech = "DrawMultiply";
multiplier = 80.0f / obs_get_video_sdr_white_level();
break;
case GS_CS_709_SCRGB:
break;
}
}

View file

@ -108,6 +108,9 @@ static inline void calc_gpu_conversion_sizes(struct obs_core_video_mix *video)
video->conversion_techs[0] = "P010_SRGB_Y";
video->conversion_techs[1] = "P010_SRGB_UV";
}
break;
default:
break;
}
}
@ -234,6 +237,8 @@ static bool obs_init_gpu_conversion(struct obs_core_video_mix *video)
if (!video->convert_textures[0] || !video->convert_textures[1])
success = false;
break;
default:
break;
}
if (!success) {
@ -345,6 +350,9 @@ static bool obs_init_textures(struct obs_core_video_mix *video)
case VIDEO_FORMAT_I412:
case VIDEO_FORMAT_YA2L:
format = GS_RGBA16F;
break;
default:
break;
}
for (size_t i = 0; i < NUM_TEXTURES; i++) {
@ -390,11 +398,10 @@ static bool obs_init_textures(struct obs_core_video_mix *video)
space = GS_CS_709_EXTENDED;
break;
default:
switch (info->format) {
case VIDEO_FORMAT_I010:
case VIDEO_FORMAT_P010:
if (info->format == VIDEO_FORMAT_I010 ||
info->format == VIDEO_FORMAT_P010)
space = GS_CS_SRGB_16F;
}
break;
}
video->render_texture =
@ -2051,6 +2058,9 @@ static void obs_render_main_texture_internal(enum gs_blend_type src_c,
case GS_CS_709_SCRGB:
tech_name = "DrawMultiply";
multiplier = obs_get_video_sdr_white_level() / 80.f;
break;
case GS_CS_709_EXTENDED:
break;
}
const bool previous = gs_framebuffer_srgb_enabled();