OLD | NEW |
| (Empty) |
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. | |
4 | |
5 #ifndef MEDIA_BASE_SIMD_CONVERT_RGB_TO_YUV_SSSE3_H_ | |
6 #define MEDIA_BASE_SIMD_CONVERT_RGB_TO_YUV_SSSE3_H_ | |
7 | |
8 #include <stddef.h> | |
9 #include <stdint.h> | |
10 | |
11 #ifdef __cplusplus | |
12 extern "C" { | |
13 #endif | |
14 | |
15 // The header file for ASM functions that convert a row of RGB pixels with SSSE3 | |
16 // instructions so we can call them from C++ code. These functions are | |
17 // implemented in "convert_rgb_to_yuv_ssse3.asm". | |
18 | |
19 // We use ptrdiff_t instead of int for yasm routine parameters to portably | |
20 // sign-extend int. On Win64, MSVC does not sign-extend the value in the stack | |
21 // home of int function parameters, and yasm routines are unaware of this lack | |
22 // of extension and fault. ptrdiff_t is portably sign-extended and fixes this | |
23 // issue on at least Win64. | |
24 | |
25 // Convert a row of 24-bit RGB pixels to YV12 pixels. | |
26 void ConvertRGBToYUVRow_SSSE3(const uint8_t* rgb, | |
27 uint8_t* y, | |
28 uint8_t* u, | |
29 uint8_t* v, | |
30 ptrdiff_t width); | |
31 | |
32 // Convert a row of 32-bit RGB pixels to YV12 pixels. | |
33 void ConvertARGBToYUVRow_SSSE3(const uint8_t* argb, | |
34 uint8_t* y, | |
35 uint8_t* u, | |
36 uint8_t* v, | |
37 ptrdiff_t width); | |
38 | |
39 #ifdef __cplusplus | |
40 } | |
41 #endif | |
42 | |
43 #endif // MEDIA_BASE_SIMD_CONVERT_RGB_TO_YUV_SSSE3_H_ | |
OLD | NEW |