vic: Implement RGBX frame format
This commit is contained in:
		| @@ -68,13 +68,24 @@ void Vic::Execute() { | ||||
|     const auto pixel_format = static_cast<VideoPixelFormat>(config.pixel_format.Value()); | ||||
|     switch (pixel_format) { | ||||
|     case VideoPixelFormat::BGRA8: | ||||
|     case VideoPixelFormat::RGBX8: | ||||
|     case VideoPixelFormat::RGBA8: { | ||||
|         LOG_TRACE(Service_NVDRV, "Writing RGB Frame"); | ||||
|  | ||||
|         if (scaler_ctx == nullptr || frame->width != scaler_width || | ||||
|             frame->height != scaler_height) { | ||||
|             const AVPixelFormat target_format = | ||||
|                 (pixel_format == VideoPixelFormat::RGBA8) ? AV_PIX_FMT_RGBA : AV_PIX_FMT_BGRA; | ||||
|             const AVPixelFormat target_format = [pixel_format]() { | ||||
|                 switch (pixel_format) { | ||||
|                 case VideoPixelFormat::BGRA8: | ||||
|                     return AV_PIX_FMT_BGRA; | ||||
|                 case VideoPixelFormat::RGBX8: | ||||
|                     return AV_PIX_FMT_RGB0; | ||||
|                 case VideoPixelFormat::RGBA8: | ||||
|                     return AV_PIX_FMT_RGBA; | ||||
|                 default: | ||||
|                     return AV_PIX_FMT_RGBA; | ||||
|                 } | ||||
|             }(); | ||||
|  | ||||
|             sws_freeContext(scaler_ctx); | ||||
|             scaler_ctx = nullptr; | ||||
| @@ -190,7 +201,7 @@ void Vic::Execute() { | ||||
|         break; | ||||
|     } | ||||
|     default: | ||||
|         UNIMPLEMENTED_MSG("Unknown video pixel format {}", config.pixel_format.Value()); | ||||
|         UNIMPLEMENTED_MSG("Unknown video pixel format {:X}", config.pixel_format.Value()); | ||||
|         break; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -38,6 +38,7 @@ private: | ||||
|     enum class VideoPixelFormat : u64_le { | ||||
|         RGBA8 = 0x1f, | ||||
|         BGRA8 = 0x20, | ||||
|         RGBX8 = 0x23, | ||||
|         Yuv420 = 0x44, | ||||
|     }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ameerj
					ameerj