Browse Source

deps/media-playback: Convert YUV alpha formats to RGB on GPU

I40A -> RGBA, 1080p, CPU
swscale (MMX), Intel i7-6700: 1910 us -> 0 us

GPU measurements used Intel GPA with SetStablePowerState.

I40A -> RGBA, 1080p, GPU
Intel HD Graphics 530: 0 us -> 677 us
NVIDIA RTX 2080 Ti: 0 us -> 43 us
jpark37 6 years ago
parent
commit
1e87df89bb

+ 9 - 0
deps/media-playback/media-playback/closest-format.h

@@ -61,6 +61,15 @@ static enum AVPixelFormat closest_format(enum AVPixelFormat fmt)
 	case AV_PIX_FMT_YUV420P14LE:
 		return AV_PIX_FMT_YUV420P;
 
+	case AV_PIX_FMT_YUVA420P:
+		return AV_PIX_FMT_YUVA420P;
+
+	case AV_PIX_FMT_YUVA422P:
+		return AV_PIX_FMT_YUVA422P;
+
+	case AV_PIX_FMT_YUVA444P:
+		return AV_PIX_FMT_YUVA444P;
+
 	case AV_PIX_FMT_RGBA:
 	case AV_PIX_FMT_BGRA:
 	case AV_PIX_FMT_BGR0:

+ 6 - 0
deps/media-playback/media-playback/media.c

@@ -48,6 +48,12 @@ static inline enum video_format convert_pixel_format(int f)
 		return VIDEO_FORMAT_BGRA;
 	case AV_PIX_FMT_BGR0:
 		return VIDEO_FORMAT_BGRX;
+	case AV_PIX_FMT_YUVA420P:
+		return VIDEO_FORMAT_I40A;
+	case AV_PIX_FMT_YUVA422P:
+		return VIDEO_FORMAT_I42A;
+	case AV_PIX_FMT_YUVA444P:
+		return VIDEO_FORMAT_YUVA;
 	default:;
 	}