summaryrefslogtreecommitdiffstats
path: root/media/base/yuv_row.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/yuv_row.h')
-rw-r--r--media/base/yuv_row.h62
1 files changed, 42 insertions, 20 deletions
diff --git a/media/base/yuv_row.h b/media/base/yuv_row.h
index 11fc71f..b8651f5 100644
--- a/media/base/yuv_row.h
+++ b/media/base/yuv_row.h
@@ -12,33 +12,55 @@
namespace media {
-void ConvertYV12ToRGB32Row(const uint8* y_buf,
- const uint8* u_buf,
- const uint8* v_buf,
- uint8* rgb_buf,
- int width);
+// Can only do 1x.
+// This is the second fastest of the scalers.
+void FastConvertYUVToRGB32Row(const uint8* y_buf,
+ const uint8* u_buf,
+ const uint8* v_buf,
+ uint8* rgb_buf,
+ int width);
-void HalfYV12ToRGB32Row(const uint8* y_buf,
- const uint8* u_buf,
- const uint8* v_buf,
- uint8* rgb_buf,
- int width);
+// Can do 1x, half size or any scale down by an integer amount.
+// Step can be negative (mirroring, rotate 180).
+// This is the third fastest of the scalers.
+void ConvertYUVToRGB32Row(const uint8* y_buf,
+ const uint8* u_buf,
+ const uint8* v_buf,
+ uint8* rgb_buf,
+ int width,
+ int step);
+
+// Rotate is like Convert, but applies different step to Y versus U and V.
+// This allows rotation by 90 or 270, by stepping by stride.
+// This is the forth fastest of the scalers.
+void RotateConvertYUVToRGB32Row(const uint8* y_buf,
+ const uint8* u_buf,
+ const uint8* v_buf,
+ uint8* rgb_buf,
+ int width,
+ int ystep,
+ int uvstep);
-void ScaleYV12ToRGB32Row(const uint8* y_buf,
+// Doubler does 4 pixels at a time. Each pixel is replicated.
+// This is the fastest of the scalers.
+void DoubleYUVToRGB32Row(const uint8* y_buf,
const uint8* u_buf,
const uint8* v_buf,
uint8* rgb_buf,
- int width,
- int scaled_dx);
+ int width);
-void Half2Row(const uint8* in_row0,
- const uint8* in_row1,
- uint8* out_row,
- int out_width);
-
-// MMX for Windows
-// C++ code provided as a fall back.
+// Handles arbitrary scaling up or down.
+// Mirroring is supported, but not 90 or 270 degree rotation.
+// Chroma is under sampled every 2 pixels for performance.
+// This is the slowest of the scalers.
+void ScaleYUVToRGB32Row(const uint8* y_buf,
+ const uint8* u_buf,
+ const uint8* v_buf,
+ uint8* rgb_buf,
+ int width,
+ int scaled_dx);
+// MMX for Windows; C++ for other platforms.
#ifndef USE_MMX
#if defined(_MSC_VER)
#define USE_MMX 1