Fix for browser_plugin_host_browsertest when embedder is not yet available.
[chromium-blink-merge.git] / media / base / simd / convert_yuv_to_rgb_x86.cc
blobd1d6e16beb7901c097431fe118f8036bb6ed1c46
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #if defined(_MSC_VER)
6 #include <intrin.h>
7 #else
8 #include <mmintrin.h>
9 #endif
11 #include "media/base/simd/convert_yuv_to_rgb.h"
12 #include "media/base/yuv_convert.h"
14 namespace media {
16 void ConvertYUVToRGB32_MMX(const uint8* yplane,
17 const uint8* uplane,
18 const uint8* vplane,
19 uint8* rgbframe,
20 int width,
21 int height,
22 int ystride,
23 int uvstride,
24 int rgbstride,
25 YUVType yuv_type) {
26 unsigned int y_shift = yuv_type;
27 for (int y = 0; y < height; ++y) {
28 uint8* rgb_row = rgbframe + y * rgbstride;
29 const uint8* y_ptr = yplane + y * ystride;
30 const uint8* u_ptr = uplane + (y >> y_shift) * uvstride;
31 const uint8* v_ptr = vplane + (y >> y_shift) * uvstride;
33 ConvertYUVToRGB32Row_MMX(y_ptr,
34 u_ptr,
35 v_ptr,
36 rgb_row,
37 width);
40 EmptyRegisterState();
43 void ConvertYUVAToARGB_MMX(const uint8* yplane,
44 const uint8* uplane,
45 const uint8* vplane,
46 const uint8* aplane,
47 uint8* rgbframe,
48 int width,
49 int height,
50 int ystride,
51 int uvstride,
52 int astride,
53 int rgbstride,
54 YUVType yuv_type) {
55 unsigned int y_shift = yuv_type;
56 for (int y = 0; y < height; ++y) {
57 uint8* rgb_row = rgbframe + y * rgbstride;
58 const uint8* y_ptr = yplane + y * ystride;
59 const uint8* u_ptr = uplane + (y >> y_shift) * uvstride;
60 const uint8* v_ptr = vplane + (y >> y_shift) * uvstride;
61 const uint8* a_ptr = aplane + y * astride;
63 ConvertYUVAToARGBRow_MMX(y_ptr,
64 u_ptr,
65 v_ptr,
66 a_ptr,
67 rgb_row,
68 width);
71 EmptyRegisterState();
74 void ConvertYUVToRGB32_SSE(const uint8* yplane,
75 const uint8* uplane,
76 const uint8* vplane,
77 uint8* rgbframe,
78 int width,
79 int height,
80 int ystride,
81 int uvstride,
82 int rgbstride,
83 YUVType yuv_type) {
84 unsigned int y_shift = yuv_type;
85 for (int y = 0; y < height; ++y) {
86 uint8* rgb_row = rgbframe + y * rgbstride;
87 const uint8* y_ptr = yplane + y * ystride;
88 const uint8* u_ptr = uplane + (y >> y_shift) * uvstride;
89 const uint8* v_ptr = vplane + (y >> y_shift) * uvstride;
91 ConvertYUVToRGB32Row_SSE(y_ptr,
92 u_ptr,
93 v_ptr,
94 rgb_row,
95 width);
98 EmptyRegisterState();
101 } // namespace media