Index: media/base/simd/convert_yuv_to_rgb_x86.cc |
diff --git a/media/base/simd/convert_yuv_to_rgb_x86.cc b/media/base/simd/convert_yuv_to_rgb_x86.cc |
index 37b168d8719ff37c579e84dab7d182bcb1d28af6..d1d6e16beb7901c097431fe118f8036bb6ed1c46 100644 |
--- a/media/base/simd/convert_yuv_to_rgb_x86.cc |
+++ b/media/base/simd/convert_yuv_to_rgb_x86.cc |
@@ -40,6 +40,37 @@ void ConvertYUVToRGB32_MMX(const uint8* yplane, |
EmptyRegisterState(); |
} |
+void ConvertYUVAToARGB_MMX(const uint8* yplane, |
+ const uint8* uplane, |
+ const uint8* vplane, |
+ const uint8* aplane, |
+ uint8* rgbframe, |
+ int width, |
+ int height, |
+ int ystride, |
+ int uvstride, |
+ int astride, |
+ int rgbstride, |
+ YUVType yuv_type) { |
+ unsigned int y_shift = yuv_type; |
+ for (int y = 0; y < height; ++y) { |
+ uint8* rgb_row = rgbframe + y * rgbstride; |
+ const uint8* y_ptr = yplane + y * ystride; |
+ const uint8* u_ptr = uplane + (y >> y_shift) * uvstride; |
+ const uint8* v_ptr = vplane + (y >> y_shift) * uvstride; |
+ const uint8* a_ptr = aplane + y * astride; |
+ |
+ ConvertYUVAToARGBRow_MMX(y_ptr, |
+ u_ptr, |
+ v_ptr, |
+ a_ptr, |
+ rgb_row, |
+ width); |
+ } |
+ |
+ EmptyRegisterState(); |
+} |
+ |
void ConvertYUVToRGB32_SSE(const uint8* yplane, |
const uint8* uplane, |
const uint8* vplane, |