| Index: media/base/simd/convert_yuv_to_rgb.h
|
| diff --git a/media/base/simd/convert_yuv_to_rgb.h b/media/base/simd/convert_yuv_to_rgb.h
|
| index 164ad11a83a5e1e40881b6d83b9c73661cef01f3..d05f039977f68bf8ee54441246baf9e3f6270b29 100644
|
| --- a/media/base/simd/convert_yuv_to_rgb.h
|
| +++ b/media/base/simd/convert_yuv_to_rgb.h
|
| @@ -59,70 +59,78 @@ void ConvertYUVToRGB32_MMX(const uint8* yplane,
|
| // Assembly functions are declared without namespace.
|
| extern "C" {
|
|
|
| +// We use ptrdiff_t instead of int for yasm routine parameters to portably
|
| +// sign-extend int. On Win64, MSVC does not sign-extend the value in the stack
|
| +// home of int function parameters, and yasm routines are unaware of this lack
|
| +// of extension and fault. ptrdiff_t is portably sign-extended and fixes this
|
| +// issue on at least Win64. The C-equivalent RowProc versions' prototypes
|
| +// include the same change to ptrdiff_t to reuse the typedefs.
|
| +
|
| typedef void (*ConvertYUVToRGB32RowProc)(const uint8*,
|
| const uint8*,
|
| const uint8*,
|
| uint8*,
|
| - int);
|
| + ptrdiff_t);
|
| +
|
| typedef void (*ScaleYUVToRGB32RowProc)(const uint8*,
|
| const uint8*,
|
| const uint8*,
|
| uint8*,
|
| - int,
|
| - int);
|
| + ptrdiff_t,
|
| + ptrdiff_t);
|
|
|
| void ConvertYUVToRGB32Row_C(const uint8* yplane,
|
| const uint8* uplane,
|
| const uint8* vplane,
|
| uint8* rgbframe,
|
| - int width);
|
| + ptrdiff_t width);
|
|
|
| void ConvertYUVToRGB32Row_MMX(const uint8* yplane,
|
| const uint8* uplane,
|
| const uint8* vplane,
|
| uint8* rgbframe,
|
| - int width);
|
| + ptrdiff_t width);
|
|
|
| void ConvertYUVToRGB32Row_SSE(const uint8* yplane,
|
| const uint8* uplane,
|
| const uint8* vplane,
|
| uint8* rgbframe,
|
| - int width);
|
| + ptrdiff_t width);
|
|
|
| void ScaleYUVToRGB32Row_C(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void ScaleYUVToRGB32Row_MMX(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void ScaleYUVToRGB32Row_SSE(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void ScaleYUVToRGB32Row_SSE2_X64(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void LinearScaleYUVToRGB32Row_C(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void LinearScaleYUVToRGB32RowWithRange_C(const uint8* y_buf,
|
| const uint8* u_buf,
|
| @@ -136,22 +144,22 @@ void LinearScaleYUVToRGB32Row_MMX(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void LinearScaleYUVToRGB32Row_SSE(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| void LinearScaleYUVToRGB32Row_MMX_X64(const uint8* y_buf,
|
| const uint8* u_buf,
|
| const uint8* v_buf,
|
| uint8* rgb_buf,
|
| - int width,
|
| - int source_dx);
|
| + ptrdiff_t width,
|
| + ptrdiff_t source_dx);
|
|
|
| } // extern "C"
|
|
|
|
|