Kaynağa Gözat

libobs: Fix non-exhaustive switch statements

PatTheMav 2 yıl önce
ebeveyn
işleme
fb7a9edadc

+ 2 - 2
libobs/graphics/graphics-ffmpeg.c

@@ -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,

+ 3 - 0
libobs/media-io/video-io.c

@@ -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;

+ 8 - 7
libobs/media-io/video-matrices.c

@@ -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;
-	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,
 	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,

+ 16 - 28
libobs/obs-scene.c

@@ -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) {
-			case GS_CS_SRGB:
-			case GS_CS_SRGB_16F:
+			if (current_space == GS_CS_SRGB ||
+			    current_space == GS_CS_SRGB_16F)
 				tech_name = "DrawUpscaleTonemap";
 				tech_name = "DrawUpscaleTonemap";
-				break;
-			case GS_CS_709_SCRGB:
+			else if (current_space == 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) {
-			case GS_CS_SRGB:
-			case GS_CS_SRGB_16F:
+			if (current_space == GS_CS_SRGB ||
+			    current_space == GS_CS_SRGB_16F)
 				tech_name = "DrawUpscaleMultiplyTonemap";
 				tech_name = "DrawUpscaleMultiplyTonemap";
-				break;
-			case GS_CS_709_EXTENDED:
+			else if (current_space == 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) {
-			case GS_CS_SRGB:
-			case GS_CS_SRGB_16F:
+			if (current_space == GS_CS_SRGB ||
+			    current_space == GS_CS_SRGB_16F)
 				tech_name = "DrawTonemap";
 				tech_name = "DrawTonemap";
-				break;
-			case GS_CS_709_SCRGB:
+			else if (current_space == 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) {
-			case GS_CS_SRGB:
-			case GS_CS_SRGB_16F:
+			if (current_space == GS_CS_SRGB ||
+			    current_space == GS_CS_SRGB_16F)
 				tech_name = "DrawMultiplyTonemap";
 				tech_name = "DrawMultiplyTonemap";
-				break;
-			case GS_CS_709_EXTENDED:
+			else if (current_space == 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) {
-		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;
 			space = GS_CS_709_EXTENDED;
-		}
 	}
 	}
 
 
 	return space;
 	return space;

+ 6 - 0
libobs/obs-source-deinterlace.c

@@ -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;
 		}
 		}
 	}
 	}
 
 

+ 17 - 0
libobs/obs-source.c

@@ -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;
 		}
 		}
 	}
 	}
 
 

+ 14 - 4
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) {
-		case VIDEO_FORMAT_I010:
-		case VIDEO_FORMAT_P010:
+		if (info->format == VIDEO_FORMAT_I010 ||
+		    info->format == 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();