Index: media/base/yuv_row.h |
=================================================================== |
--- media/base/yuv_row.h (revision 16299) |
+++ media/base/yuv_row.h (working copy) |
@@ -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); |
-void ScaleYV12ToRGB32Row(const uint8* y_buf, |
+// 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); |
+ |
+// 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); |
+// 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++ code provided as a fall back. |
- |
+// MMX for Windows; C++ for other platforms. |
#ifndef USE_MMX |
#if defined(_MSC_VER) |
#define USE_MMX 1 |