aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/yuv_to_rgb.cpp7
-rw-r--r--graphics/yuv_to_rgb.h18
2 files changed, 25 insertions, 0 deletions
diff --git a/graphics/yuv_to_rgb.cpp b/graphics/yuv_to_rgb.cpp
index b1107a7475..831736cd75 100644
--- a/graphics/yuv_to_rgb.cpp
+++ b/graphics/yuv_to_rgb.cpp
@@ -203,6 +203,13 @@ namespace Graphics {
*((uint32 *)(d)) = (L[cr_r] | L[crb_g] | L[cb_b])
void convertYUV420ToRGB(Graphics::Surface *dst, const byte *ySrc, const byte *uSrc, const byte *vSrc, int yWidth, int yHeight, int yPitch, int uvPitch) {
+ // Sanity checks
+ assert(dst && dst->pixels);
+ assert(dst->format.bytesPerPixel == 2 || dst->format.bytesPerPixel == 4);
+ assert(ySrc && uSrc && vSrc);
+ assert((yWidth & 1) == 0);
+ assert((yHeight & 1) == 0);
+
const YUVToRGBLookup *lookup = YUVToRGBMan.getLookup(dst->format);
byte *dstPtr = (byte *)dst->pixels;
diff --git a/graphics/yuv_to_rgb.h b/graphics/yuv_to_rgb.h
index 30f64ee570..9b561f2002 100644
--- a/graphics/yuv_to_rgb.h
+++ b/graphics/yuv_to_rgb.h
@@ -23,6 +23,12 @@
*
*/
+/**
+ * @file
+ * YUV to RGB conversion used in engines:
+ * - sword25
+ */
+
#ifndef GRAPHICS_YUV_TO_RGB_H
#define GRAPHICS_YUV_TO_RGB_H
@@ -33,6 +39,18 @@ namespace Graphics {
struct Surface;
+/**
+ * Convert a YUV420 image to an RGB surface
+ *
+ * @param dst the destination surface
+ * @param ySrc the source of the y component
+ * @param uSrc the source of the u component
+ * @param vSrc the source of the v component
+ * @param yWidth the width of the y surface (must be divisible by 2)
+ * @param yHeight the height of the y surface (must be divisible by 2)
+ * @param yPitch the pitch of the y surface
+ * @param uvPitch the pitch of the u and v surfaces
+ */
void convertYUV420ToRGB(Graphics::Surface *dst, const byte *ySrc, const byte *uSrc, const byte *vSrc, int yWidth, int yHeight, int yPitch, int uvPitch);
} // End of namespace Graphics