Add YuvImage as a GpuBuffer storage backend.
PiperOrigin-RevId: 505128789
This commit is contained in:
		
							parent
							
								
									e059d55d29
								
							
						
					
					
						commit
						1df4511e9d
					
				|  | @ -441,6 +441,21 @@ cc_library( | |||
|     ], | ||||
| ) | ||||
| 
 | ||||
| cc_library( | ||||
|     name = "gpu_buffer_storage_yuv_image", | ||||
|     srcs = ["gpu_buffer_storage_yuv_image.cc"], | ||||
|     hdrs = ["gpu_buffer_storage_yuv_image.h"], | ||||
|     visibility = ["//visibility:public"], | ||||
|     deps = [ | ||||
|         ":gpu_buffer_format", | ||||
|         ":gpu_buffer_storage", | ||||
|         "//mediapipe/framework/formats:yuv_image", | ||||
|         "//third_party/libyuv", | ||||
|         "@com_google_absl//absl/log", | ||||
|         "@com_google_absl//absl/log:check", | ||||
|     ], | ||||
| ) | ||||
| 
 | ||||
| cc_library( | ||||
|     name = "gpu_buffer_storage_ahwb", | ||||
|     srcs = ["gpu_buffer_storage_ahwb.cc"], | ||||
|  | @ -1187,3 +1202,17 @@ mediapipe_cc_test( | |||
|         "//mediapipe/framework/port:gtest_main", | ||||
|     ], | ||||
| ) | ||||
| 
 | ||||
| mediapipe_cc_test( | ||||
|     name = "gpu_buffer_storage_yuv_image_test", | ||||
|     size = "small", | ||||
|     srcs = ["gpu_buffer_storage_yuv_image_test.cc"], | ||||
|     exclude_platforms = [ | ||||
|         "ios", | ||||
|     ], | ||||
|     deps = [ | ||||
|         ":gpu_buffer_format", | ||||
|         ":gpu_buffer_storage_yuv_image", | ||||
|         "//mediapipe/framework/port:gtest_main", | ||||
|     ], | ||||
| ) | ||||
|  |  | |||
|  | @ -212,6 +212,10 @@ ImageFormat::Format ImageFormatForGpuBufferFormat(GpuBufferFormat format) { | |||
|     case GpuBufferFormat::kTwoComponentHalf16: | ||||
|     case GpuBufferFormat::kRGBAHalf64: | ||||
|     case GpuBufferFormat::kRGBAFloat128: | ||||
|     case GpuBufferFormat::kNV12: | ||||
|     case GpuBufferFormat::kNV21: | ||||
|     case GpuBufferFormat::kI420: | ||||
|     case GpuBufferFormat::kYV12: | ||||
|     case GpuBufferFormat::kUnknown: | ||||
|       return ImageFormat::UNKNOWN; | ||||
|   } | ||||
|  |  | |||
|  | @ -52,6 +52,14 @@ enum class GpuBufferFormat : uint32_t { | |||
|   kRGB24 = 0x00000018,  // Note: prefer BGRA32 whenever possible.
 | ||||
|   kRGBAHalf64 = MEDIAPIPE_FOURCC('R', 'G', 'h', 'A'), | ||||
|   kRGBAFloat128 = MEDIAPIPE_FOURCC('R', 'G', 'f', 'A'), | ||||
|   // 8-bit Y plane + interleaved 8-bit U/V plane with 2x2 subsampling.
 | ||||
|   kNV12 = MEDIAPIPE_FOURCC('N', 'V', '1', '2'), | ||||
|   // 8-bit Y plane + interleaved 8-bit V/U plane with 2x2 subsampling.
 | ||||
|   kNV21 = MEDIAPIPE_FOURCC('N', 'V', '2', '1'), | ||||
|   // 8-bit Y plane + non-interleaved 8-bit U/V planes with 2x2 subsampling.
 | ||||
|   kI420 = MEDIAPIPE_FOURCC('I', '4', '2', '0'), | ||||
|   // 8-bit Y plane + non-interleaved 8-bit V/U planes with 2x2 subsampling.
 | ||||
|   kYV12 = MEDIAPIPE_FOURCC('Y', 'V', '1', '2'), | ||||
| }; | ||||
| 
 | ||||
| #if !MEDIAPIPE_DISABLE_GPU | ||||
|  | @ -111,6 +119,10 @@ inline OSType CVPixelFormatForGpuBufferFormat(GpuBufferFormat format) { | |||
|       return kCVPixelFormatType_64RGBAHalf; | ||||
|     case GpuBufferFormat::kRGBAFloat128: | ||||
|       return kCVPixelFormatType_128RGBAFloat; | ||||
|     case GpuBufferFormat::kNV12: | ||||
|     case GpuBufferFormat::kNV21: | ||||
|     case GpuBufferFormat::kI420: | ||||
|     case GpuBufferFormat::kYV12: | ||||
|     case GpuBufferFormat::kUnknown: | ||||
|       return -1; | ||||
|   } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user