mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-15 07:44:10 +00:00
libobs: Fix non-exhaustive switch statements
This commit is contained in:
parent
cfa0dc573e
commit
fb7a9edadc
|
@ -626,9 +626,9 @@ static inline enum gs_color_format convert_format(enum AVPixelFormat format)
|
||||||
return GS_BGRX;
|
return GS_BGRX;
|
||||||
case AV_PIX_FMT_RGBA64BE:
|
case AV_PIX_FMT_RGBA64BE:
|
||||||
return GS_RGBA16;
|
return GS_RGBA16;
|
||||||
|
default:
|
||||||
|
return GS_BGRX;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GS_BGRX;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *gs_create_texture_file_data(const char *file,
|
uint8_t *gs_create_texture_file_data(const char *file,
|
||||||
|
|
|
@ -309,6 +309,9 @@ static enum video_colorspace collapse_space(enum video_colorspace cs)
|
||||||
break;
|
break;
|
||||||
case VIDEO_CS_2100_HLG:
|
case VIDEO_CS_2100_HLG:
|
||||||
cs = VIDEO_CS_2100_PQ;
|
cs = VIDEO_CS_2100_PQ;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cs;
|
return cs;
|
||||||
|
|
|
@ -242,12 +242,10 @@ bool video_format_get_parameters(enum video_colorspace color_space,
|
||||||
enum video_range_type range, float matrix[16],
|
enum video_range_type range, float matrix[16],
|
||||||
float range_min[3], float range_max[3])
|
float range_min[3], float range_max[3])
|
||||||
{
|
{
|
||||||
uint32_t bpc = 8;
|
uint32_t bpc = (color_space == VIDEO_CS_2100_PQ ||
|
||||||
switch (color_space) {
|
color_space == VIDEO_CS_2100_HLG)
|
||||||
case VIDEO_CS_2100_PQ:
|
? 10
|
||||||
case VIDEO_CS_2100_HLG:
|
: 8;
|
||||||
bpc = 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
return video_format_get_parameters_for_bpc(color_space, range, matrix,
|
return video_format_get_parameters_for_bpc(color_space, range, matrix,
|
||||||
range_min, range_max, bpc);
|
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_min[3],
|
||||||
float range_max[3])
|
float range_max[3])
|
||||||
{
|
{
|
||||||
uint32_t bpc = 8;
|
uint32_t bpc;
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case VIDEO_FORMAT_I010:
|
case VIDEO_FORMAT_I010:
|
||||||
case VIDEO_FORMAT_P010:
|
case VIDEO_FORMAT_P010:
|
||||||
|
@ -271,6 +269,9 @@ bool video_format_get_parameters_for_format(enum video_colorspace color_space,
|
||||||
case VIDEO_FORMAT_YA2L:
|
case VIDEO_FORMAT_YA2L:
|
||||||
bpc = 12;
|
bpc = 12;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
bpc = 8;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return video_format_get_parameters_for_bpc(color_space, range, matrix,
|
return video_format_get_parameters_for_bpc(color_space, range, matrix,
|
||||||
|
|
|
@ -642,24 +642,19 @@ static void render_item_texture(struct obs_scene_item *item,
|
||||||
tech_name = "DrawUpscaleMultiply";
|
tech_name = "DrawUpscaleMultiply";
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_EXTENDED:
|
case GS_CS_709_EXTENDED:
|
||||||
switch (current_space) {
|
if (current_space == GS_CS_SRGB ||
|
||||||
case GS_CS_SRGB:
|
current_space == GS_CS_SRGB_16F)
|
||||||
case GS_CS_SRGB_16F:
|
|
||||||
tech_name = "DrawUpscaleTonemap";
|
tech_name = "DrawUpscaleTonemap";
|
||||||
break;
|
else if (current_space == GS_CS_709_SCRGB)
|
||||||
case GS_CS_709_SCRGB:
|
|
||||||
tech_name = "DrawUpscaleMultiply";
|
tech_name = "DrawUpscaleMultiply";
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_SCRGB:
|
case GS_CS_709_SCRGB:
|
||||||
switch (current_space) {
|
if (current_space == GS_CS_SRGB ||
|
||||||
case GS_CS_SRGB:
|
current_space == GS_CS_SRGB_16F)
|
||||||
case GS_CS_SRGB_16F:
|
|
||||||
tech_name = "DrawUpscaleMultiplyTonemap";
|
tech_name = "DrawUpscaleMultiplyTonemap";
|
||||||
break;
|
else if (current_space == GS_CS_709_EXTENDED)
|
||||||
case GS_CS_709_EXTENDED:
|
|
||||||
tech_name = "DrawUpscaleMultiply";
|
tech_name = "DrawUpscaleMultiply";
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (source_space) {
|
switch (source_space) {
|
||||||
|
@ -669,24 +664,19 @@ static void render_item_texture(struct obs_scene_item *item,
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_EXTENDED:
|
case GS_CS_709_EXTENDED:
|
||||||
switch (current_space) {
|
if (current_space == GS_CS_SRGB ||
|
||||||
case GS_CS_SRGB:
|
current_space == GS_CS_SRGB_16F)
|
||||||
case GS_CS_SRGB_16F:
|
|
||||||
tech_name = "DrawTonemap";
|
tech_name = "DrawTonemap";
|
||||||
break;
|
else if (current_space == GS_CS_709_SCRGB)
|
||||||
case GS_CS_709_SCRGB:
|
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_SCRGB:
|
case GS_CS_709_SCRGB:
|
||||||
switch (current_space) {
|
if (current_space == GS_CS_SRGB ||
|
||||||
case GS_CS_SRGB:
|
current_space == GS_CS_SRGB_16F)
|
||||||
case GS_CS_SRGB_16F:
|
|
||||||
tech_name = "DrawMultiplyTonemap";
|
tech_name = "DrawMultiplyTonemap";
|
||||||
break;
|
else if (current_space == GS_CS_709_EXTENDED)
|
||||||
case GS_CS_709_EXTENDED:
|
|
||||||
tech_name = "DrawMultiply";
|
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;
|
enum gs_color_space space = GS_CS_SRGB;
|
||||||
struct obs_video_info ovi;
|
struct obs_video_info ovi;
|
||||||
if (obs_get_video_info(&ovi)) {
|
if (obs_get_video_info(&ovi)) {
|
||||||
switch (ovi.colorspace) {
|
if (ovi.colorspace == VIDEO_CS_2100_PQ ||
|
||||||
case VIDEO_CS_2100_PQ:
|
ovi.colorspace == VIDEO_CS_2100_HLG)
|
||||||
case VIDEO_CS_2100_HLG:
|
|
||||||
space = GS_CS_709_EXTENDED;
|
space = GS_CS_709_EXTENDED;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return space;
|
return space;
|
||||||
|
|
|
@ -400,6 +400,9 @@ void deinterlace_render(obs_source_t *s)
|
||||||
case GS_CS_709_SCRGB:
|
case GS_CS_709_SCRGB:
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
||||||
|
break;
|
||||||
|
case GS_CS_709_EXTENDED:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_SCRGB:
|
case GS_CS_709_SCRGB:
|
||||||
|
@ -412,6 +415,9 @@ void deinterlace_render(obs_source_t *s)
|
||||||
case GS_CS_709_EXTENDED:
|
case GS_CS_709_EXTENDED:
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
multiplier = 80.0f / obs_get_video_sdr_white_level();
|
multiplier = 80.0f / obs_get_video_sdr_white_level();
|
||||||
|
break;
|
||||||
|
case GS_CS_709_SCRGB:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2516,6 +2516,9 @@ static inline void obs_source_render_async_video(obs_source_t *source)
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
multiplier =
|
multiplier =
|
||||||
obs_get_video_sdr_white_level() / 80.0f;
|
obs_get_video_sdr_white_level() / 80.0f;
|
||||||
|
break;
|
||||||
|
case GS_CS_709_EXTENDED:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_SCRGB:
|
case GS_CS_709_SCRGB:
|
||||||
|
@ -2531,6 +2534,9 @@ static inline void obs_source_render_async_video(obs_source_t *source)
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
multiplier =
|
multiplier =
|
||||||
80.0f / obs_get_video_sdr_white_level();
|
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:
|
case GS_CS_709_SCRGB:
|
||||||
convert_tech = "DrawMultiply";
|
convert_tech = "DrawMultiply";
|
||||||
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
||||||
|
break;
|
||||||
|
case GS_CS_SRGB:
|
||||||
|
break;
|
||||||
|
case GS_CS_SRGB_16F:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_EXTENDED:
|
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:
|
case GS_CS_709_SCRGB:
|
||||||
convert_tech = "DrawMultiply";
|
convert_tech = "DrawMultiply";
|
||||||
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
multiplier = obs_get_video_sdr_white_level() / 80.0f;
|
||||||
|
break;
|
||||||
|
case GS_CS_709_EXTENDED:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GS_CS_709_SCRGB:
|
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:
|
case GS_CS_709_EXTENDED:
|
||||||
convert_tech = "DrawMultiply";
|
convert_tech = "DrawMultiply";
|
||||||
multiplier = 80.0f / obs_get_video_sdr_white_level();
|
multiplier = 80.0f / obs_get_video_sdr_white_level();
|
||||||
|
break;
|
||||||
|
case GS_CS_709_SCRGB:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
libobs/obs.c
18
libobs/obs.c
|
@ -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[0] = "P010_SRGB_Y";
|
||||||
video->conversion_techs[1] = "P010_SRGB_UV";
|
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])
|
if (!video->convert_textures[0] || !video->convert_textures[1])
|
||||||
success = false;
|
success = false;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
|
@ -345,6 +350,9 @@ static bool obs_init_textures(struct obs_core_video_mix *video)
|
||||||
case VIDEO_FORMAT_I412:
|
case VIDEO_FORMAT_I412:
|
||||||
case VIDEO_FORMAT_YA2L:
|
case VIDEO_FORMAT_YA2L:
|
||||||
format = GS_RGBA16F;
|
format = GS_RGBA16F;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < NUM_TEXTURES; i++) {
|
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;
|
space = GS_CS_709_EXTENDED;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
switch (info->format) {
|
if (info->format == VIDEO_FORMAT_I010 ||
|
||||||
case VIDEO_FORMAT_I010:
|
info->format == VIDEO_FORMAT_P010)
|
||||||
case VIDEO_FORMAT_P010:
|
|
||||||
space = GS_CS_SRGB_16F;
|
space = GS_CS_SRGB_16F;
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
video->render_texture =
|
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:
|
case GS_CS_709_SCRGB:
|
||||||
tech_name = "DrawMultiply";
|
tech_name = "DrawMultiply";
|
||||||
multiplier = obs_get_video_sdr_white_level() / 80.f;
|
multiplier = obs_get_video_sdr_white_level() / 80.f;
|
||||||
|
break;
|
||||||
|
case GS_CS_709_EXTENDED:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool previous = gs_framebuffer_srgb_enabled();
|
const bool previous = gs_framebuffer_srgb_enabled();
|
||||||
|
|
Loading…
Reference in a new issue