Web Speech API: cancel outstanding infobar requests when aborting.
[chromium-blink-merge.git] / media / base / simd / convert_yuv_to_rgb.h
blob2991d562af088558a2de510bd2ed13c078b35df8
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 #ifndef MEDIA_BASE_SIMD_CONVERT_YUV_TO_RGB_H_
6 #define MEDIA_BASE_SIMD_CONVERT_YUV_TO_RGB_H_
8 #include "base/basictypes.h"
9 #include "media/base/yuv_convert.h"
11 namespace media {
13 // These methods are exported for testing purposes only. Library users should
14 // only call the methods listed in yuv_convert.h.
16 MEDIA_EXPORT void ConvertYUVToRGB32_C(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);
27 MEDIA_EXPORT void ConvertYUVToRGB32Row_C(const uint8* yplane,
28 const uint8* uplane,
29 const uint8* vplane,
30 uint8* rgbframe,
31 ptrdiff_t width);
33 MEDIA_EXPORT void ConvertYUVAToARGB_C(const uint8* yplane,
34 const uint8* uplane,
35 const uint8* vplane,
36 const uint8* aplane,
37 uint8* rgbframe,
38 int width,
39 int height,
40 int ystride,
41 int uvstride,
42 int avstride,
43 int rgbstride,
44 YUVType yuv_type);
46 MEDIA_EXPORT void ConvertYUVAToARGBRow_C(const uint8* yplane,
47 const uint8* uplane,
48 const uint8* vplane,
49 const uint8* aplane,
50 uint8* rgbframe,
51 ptrdiff_t width);
53 MEDIA_EXPORT void ConvertYUVToRGB32_SSE(const uint8* yplane,
54 const uint8* uplane,
55 const uint8* vplane,
56 uint8* rgbframe,
57 int width,
58 int height,
59 int ystride,
60 int uvstride,
61 int rgbstride,
62 YUVType yuv_type);
64 MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8* yplane,
65 const uint8* uplane,
66 const uint8* vplane,
67 uint8* rgbframe,
68 int width,
69 int height,
70 int ystride,
71 int uvstride,
72 int rgbstride,
73 YUVType yuv_type);
75 MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8* yplane,
76 const uint8* uplane,
77 const uint8* vplane,
78 const uint8* aplane,
79 uint8* rgbframe,
80 int width,
81 int height,
82 int ystride,
83 int uvstride,
84 int avstride,
85 int rgbstride,
86 YUVType yuv_type);
88 MEDIA_EXPORT void ScaleYUVToRGB32Row_C(const uint8* y_buf,
89 const uint8* u_buf,
90 const uint8* v_buf,
91 uint8* rgb_buf,
92 ptrdiff_t width,
93 ptrdiff_t source_dx);
95 MEDIA_EXPORT void LinearScaleYUVToRGB32Row_C(const uint8* y_buf,
96 const uint8* u_buf,
97 const uint8* v_buf,
98 uint8* rgb_buf,
99 ptrdiff_t width,
100 ptrdiff_t source_dx);
102 MEDIA_EXPORT void LinearScaleYUVToRGB32RowWithRange_C(const uint8* y_buf,
103 const uint8* u_buf,
104 const uint8* v_buf,
105 uint8* rgb_buf,
106 int dest_width,
107 int source_x,
108 int source_dx);
110 } // namespace media
112 // Assembly functions are declared without namespace.
113 extern "C" {
115 // We use ptrdiff_t instead of int for yasm routine parameters to portably
116 // sign-extend int. On Win64, MSVC does not sign-extend the value in the stack
117 // home of int function parameters, and yasm routines are unaware of this lack
118 // of extension and fault. ptrdiff_t is portably sign-extended and fixes this
119 // issue on at least Win64. The C-equivalent RowProc versions' prototypes
120 // include the same change to ptrdiff_t to reuse the typedefs.
122 MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8* yplane,
123 const uint8* uplane,
124 const uint8* vplane,
125 uint8* rgbframe,
126 ptrdiff_t width);
128 MEDIA_EXPORT void ConvertYUVAToARGBRow_MMX(const uint8* yplane,
129 const uint8* uplane,
130 const uint8* vplane,
131 const uint8* aplane,
132 uint8* rgbframe,
133 ptrdiff_t width);
135 MEDIA_EXPORT void ConvertYUVToRGB32Row_SSE(const uint8* yplane,
136 const uint8* uplane,
137 const uint8* vplane,
138 uint8* rgbframe,
139 ptrdiff_t width);
141 MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8* y_buf,
142 const uint8* u_buf,
143 const uint8* v_buf,
144 uint8* rgb_buf,
145 ptrdiff_t width,
146 ptrdiff_t source_dx);
148 MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE(const uint8* y_buf,
149 const uint8* u_buf,
150 const uint8* v_buf,
151 uint8* rgb_buf,
152 ptrdiff_t width,
153 ptrdiff_t source_dx);
155 MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE2_X64(const uint8* y_buf,
156 const uint8* u_buf,
157 const uint8* v_buf,
158 uint8* rgb_buf,
159 ptrdiff_t width,
160 ptrdiff_t source_dx);
162 MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8* y_buf,
163 const uint8* u_buf,
164 const uint8* v_buf,
165 uint8* rgb_buf,
166 ptrdiff_t width,
167 ptrdiff_t source_dx);
169 MEDIA_EXPORT void LinearScaleYUVToRGB32Row_SSE(const uint8* y_buf,
170 const uint8* u_buf,
171 const uint8* v_buf,
172 uint8* rgb_buf,
173 ptrdiff_t width,
174 ptrdiff_t source_dx);
176 MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX_X64(const uint8* y_buf,
177 const uint8* u_buf,
178 const uint8* v_buf,
179 uint8* rgb_buf,
180 ptrdiff_t width,
181 ptrdiff_t source_dx);
183 } // extern "C"
185 #endif // MEDIA_BASE_SIMD_CONVERT_YUV_TO_RGB_H_