| /* |
| * Copyright 2012 The LibYuv Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #ifndef INCLUDE_LIBYUV_CONVERT_ARGB_H_ |
| #define INCLUDE_LIBYUV_CONVERT_ARGB_H_ |
| |
| #include "libyuv/basic_types.h" |
| |
| #include "libyuv/rotate.h" // For enum RotationMode. |
| |
| #ifdef __cplusplus |
| namespace libyuv { |
| extern "C" { |
| #endif |
| |
| // Conversion matrix for YUV to RGB |
| LIBYUV_API extern const struct YuvConstants kYuvI601Constants; // BT.601 |
| LIBYUV_API extern const struct YuvConstants kYuvJPEGConstants; // JPeg |
| LIBYUV_API extern const struct YuvConstants kYuvH709Constants; // BT.709 |
| LIBYUV_API extern const struct YuvConstants kYuv2020Constants; // BT.2020 |
| |
| // Conversion matrix for YVU to BGR |
| LIBYUV_API extern const struct YuvConstants kYvuI601Constants; // BT.601 |
| LIBYUV_API extern const struct YuvConstants kYvuJPEGConstants; // JPeg |
| LIBYUV_API extern const struct YuvConstants kYvuH709Constants; // BT.709 |
| LIBYUV_API extern const struct YuvConstants kYvu2020Constants; // BT.2020 |
| |
| // Macros for end swapped destination Matrix conversions. |
| // Swap UV and pass mirrored kYvuJPEGConstants matrix. |
| // TODO(fbarchard): Add macro for each Matrix function. |
| #define kYuvI601ConstantsVU kYvuI601Constants |
| #define kYuvJPEGConstantsVU kYvuJPEGConstants |
| #define kYuvH709ConstantsVU kYvuH709Constants |
| #define kYuv2020ConstantsVU kYvu2020Constants |
| #define NV12ToABGRMatrix(a, b, c, d, e, f, g, h, i) \ |
| NV21ToARGBMatrix(a, b, c, d, e, f, g##VU, h, i) |
| #define NV21ToABGRMatrix(a, b, c, d, e, f, g, h, i) \ |
| NV12ToARGBMatrix(a, b, c, d, e, f, g##VU, h, i) |
| #define NV12ToRAWMatrix(a, b, c, d, e, f, g, h, i) \ |
| NV21ToRGB24Matrix(a, b, c, d, e, f, g##VU, h, i) |
| #define NV21ToRAWMatrix(a, b, c, d, e, f, g, h, i) \ |
| NV12ToRGB24Matrix(a, b, c, d, e, f, g##VU, h, i) |
| #define I420AlphaToABGRMatrix(a, b, c, d, e, f, g, h, i, j, k, l, m, n) \ |
| I420AlphaToARGBMatrix(a, b, e, f, c, d, g, h, i, j, k##VU, l, m, n) |
| |
| // Alias. |
| #define ARGBToARGB ARGBCopy |
| |
| // Copy ARGB to ARGB. |
| LIBYUV_API |
| int ARGBCopy(const uint8_t* src_argb, |
| int src_stride_argb, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I420 to ARGB. |
| LIBYUV_API |
| int I420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I420 to ABGR. |
| LIBYUV_API |
| int I420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert J420 to ARGB. |
| LIBYUV_API |
| int J420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert J420 to ABGR. |
| LIBYUV_API |
| int J420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert H420 to ARGB. |
| LIBYUV_API |
| int H420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert H420 to ABGR. |
| LIBYUV_API |
| int H420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert U420 to ARGB. |
| LIBYUV_API |
| int U420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert U420 to ABGR. |
| LIBYUV_API |
| int U420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I422 to ARGB. |
| LIBYUV_API |
| int I422ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I422 to ABGR. |
| LIBYUV_API |
| int I422ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert J422 to ARGB. |
| LIBYUV_API |
| int J422ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert J422 to ABGR. |
| LIBYUV_API |
| int J422ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert H422 to ARGB. |
| LIBYUV_API |
| int H422ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert H422 to ABGR. |
| LIBYUV_API |
| int H422ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert U422 to ARGB. |
| LIBYUV_API |
| int U422ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert U422 to ABGR. |
| LIBYUV_API |
| int U422ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I444 to ARGB. |
| LIBYUV_API |
| int I444ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I444 to ABGR. |
| LIBYUV_API |
| int I444ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert J444 to ARGB. |
| LIBYUV_API |
| int J444ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert J444 to ABGR. |
| LIBYUV_API |
| int J444ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert H444 to ARGB. |
| LIBYUV_API |
| int H444ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert H444 to ABGR. |
| LIBYUV_API |
| int H444ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert U444 to ARGB. |
| LIBYUV_API |
| int U444ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert U444 to ABGR. |
| LIBYUV_API |
| int U444ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I010 to ARGB. |
| LIBYUV_API |
| int I010ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I010 to ABGR. |
| LIBYUV_API |
| int I010ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert H010 to ARGB. |
| LIBYUV_API |
| int H010ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert H010 to ABGR. |
| LIBYUV_API |
| int H010ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert U010 to ARGB. |
| LIBYUV_API |
| int U010ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert U010 to ABGR. |
| LIBYUV_API |
| int U010ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I210 to ARGB. |
| LIBYUV_API |
| int I210ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I210 to ABGR. |
| LIBYUV_API |
| int I210ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert H210 to ARGB. |
| LIBYUV_API |
| int H210ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert H210 to ABGR. |
| LIBYUV_API |
| int H210ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert U210 to ARGB. |
| LIBYUV_API |
| int U210ToARGB(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert U210 to ABGR. |
| LIBYUV_API |
| int U210ToABGR(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I420 with Alpha to preattenuated ARGB. |
| LIBYUV_API |
| int I420AlphaToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| const uint8_t* src_a, |
| int src_stride_a, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height, |
| int attenuate); |
| |
| // Convert I420 with Alpha to preattenuated ABGR. |
| LIBYUV_API |
| int I420AlphaToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| const uint8_t* src_a, |
| int src_stride_a, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height, |
| int attenuate); |
| |
| // Convert I400 (grey) to ARGB. Reverse of ARGBToI400. |
| LIBYUV_API |
| int I400ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert J400 (jpeg grey) to ARGB. |
| LIBYUV_API |
| int J400ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Alias. |
| #define YToARGB I400ToARGB |
| |
| // Convert NV12 to ARGB. |
| LIBYUV_API |
| int NV12ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert NV21 to ARGB. |
| LIBYUV_API |
| int NV21ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert NV12 to ABGR. |
| LIBYUV_API |
| int NV12ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert NV21 to ABGR. |
| LIBYUV_API |
| int NV21ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert NV12 to RGB24. |
| LIBYUV_API |
| int NV12ToRGB24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| int width, |
| int height); |
| |
| // Convert NV21 to RGB24. |
| LIBYUV_API |
| int NV21ToRGB24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| int width, |
| int height); |
| |
| // Convert NV21 to YUV24. |
| LIBYUV_API |
| int NV21ToYUV24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_yuv24, |
| int dst_stride_yuv24, |
| int width, |
| int height); |
| |
| // Convert NV12 to RAW. |
| LIBYUV_API |
| int NV12ToRAW(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_raw, |
| int dst_stride_raw, |
| int width, |
| int height); |
| |
| // Convert NV21 to RAW. |
| LIBYUV_API |
| int NV21ToRAW(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_raw, |
| int dst_stride_raw, |
| int width, |
| int height); |
| |
| // Convert YUY2 to ARGB. |
| LIBYUV_API |
| int YUY2ToARGB(const uint8_t* src_yuy2, |
| int src_stride_yuy2, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert UYVY to ARGB. |
| LIBYUV_API |
| int UYVYToARGB(const uint8_t* src_uyvy, |
| int src_stride_uyvy, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert I010 to AR30. |
| LIBYUV_API |
| int I010ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert I010 to AB30. |
| LIBYUV_API |
| int I010ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // Convert H010 to AR30. |
| LIBYUV_API |
| int H010ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert H010 to AB30. |
| LIBYUV_API |
| int H010ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // Convert U010 to AR30. |
| LIBYUV_API |
| int U010ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert U010 to AB30. |
| LIBYUV_API |
| int U010ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // Convert I210 to AR30. |
| LIBYUV_API |
| int I210ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert I210 to AB30. |
| LIBYUV_API |
| int I210ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // Convert H210 to AR30. |
| LIBYUV_API |
| int H210ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert H210 to AB30. |
| LIBYUV_API |
| int H210ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // Convert U210 to AR30. |
| LIBYUV_API |
| int U210ToAR30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert U210 to AB30. |
| LIBYUV_API |
| int U210ToAB30(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // BGRA little endian (argb in memory) to ARGB. |
| LIBYUV_API |
| int BGRAToARGB(const uint8_t* src_bgra, |
| int src_stride_bgra, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // ABGR little endian (rgba in memory) to ARGB. |
| LIBYUV_API |
| int ABGRToARGB(const uint8_t* src_abgr, |
| int src_stride_abgr, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // RGBA little endian (abgr in memory) to ARGB. |
| LIBYUV_API |
| int RGBAToARGB(const uint8_t* src_rgba, |
| int src_stride_rgba, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Deprecated function name. |
| #define BG24ToARGB RGB24ToARGB |
| |
| // RGB little endian (bgr in memory) to ARGB. |
| LIBYUV_API |
| int RGB24ToARGB(const uint8_t* src_rgb24, |
| int src_stride_rgb24, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // RGB big endian (rgb in memory) to ARGB. |
| LIBYUV_API |
| int RAWToARGB(const uint8_t* src_raw, |
| int src_stride_raw, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // RGB big endian (rgb in memory) to RGBA. |
| LIBYUV_API |
| int RAWToRGBA(const uint8_t* src_raw, |
| int src_stride_raw, |
| uint8_t* dst_rgba, |
| int dst_stride_rgba, |
| int width, |
| int height); |
| |
| // RGB16 (RGBP fourcc) little endian to ARGB. |
| LIBYUV_API |
| int RGB565ToARGB(const uint8_t* src_rgb565, |
| int src_stride_rgb565, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // RGB15 (RGBO fourcc) little endian to ARGB. |
| LIBYUV_API |
| int ARGB1555ToARGB(const uint8_t* src_argb1555, |
| int src_stride_argb1555, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // RGB12 (R444 fourcc) little endian to ARGB. |
| LIBYUV_API |
| int ARGB4444ToARGB(const uint8_t* src_argb4444, |
| int src_stride_argb4444, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Aliases |
| #define AB30ToARGB AR30ToABGR |
| #define AB30ToABGR AR30ToARGB |
| #define AB30ToAR30 AR30ToAB30 |
| |
| // Convert AR30 To ARGB. |
| LIBYUV_API |
| int AR30ToARGB(const uint8_t* src_ar30, |
| int src_stride_ar30, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert AR30 To ABGR. |
| LIBYUV_API |
| int AR30ToABGR(const uint8_t* src_ar30, |
| int src_stride_ar30, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert AR30 To AB30. |
| LIBYUV_API |
| int AR30ToAB30(const uint8_t* src_ar30, |
| int src_stride_ar30, |
| uint8_t* dst_ab30, |
| int dst_stride_ab30, |
| int width, |
| int height); |
| |
| // src_width/height provided by capture |
| // dst_width/height for clipping determine final size. |
| LIBYUV_API |
| int MJPGToARGB(const uint8_t* sample, |
| size_t sample_size, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int src_width, |
| int src_height, |
| int dst_width, |
| int dst_height); |
| |
| // Convert Android420 to ARGB. |
| LIBYUV_API |
| int Android420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| int src_pixel_stride_uv, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| // Convert Android420 to ABGR. |
| LIBYUV_API |
| int Android420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| int src_pixel_stride_uv, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert NV12 to RGB565. |
| LIBYUV_API |
| int NV12ToRGB565(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| int width, |
| int height); |
| |
| // Convert I422 to BGRA. |
| LIBYUV_API |
| int I422ToBGRA(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_bgra, |
| int dst_stride_bgra, |
| int width, |
| int height); |
| |
| // Convert I422 to ABGR. |
| LIBYUV_API |
| int I422ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| // Convert I422 to RGBA. |
| LIBYUV_API |
| int I422ToRGBA(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgba, |
| int dst_stride_rgba, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToARGB(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToBGRA(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_bgra, |
| int dst_stride_bgra, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToABGR(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_abgr, |
| int dst_stride_abgr, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToRGBA(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgba, |
| int dst_stride_rgba, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToRGB24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToRAW(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_raw, |
| int dst_stride_raw, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int H420ToRGB24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int H420ToRAW(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_raw, |
| int dst_stride_raw, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int J420ToRGB24(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int J420ToRAW(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_raw, |
| int dst_stride_raw, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToRGB565(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int J420ToRGB565(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int H420ToRGB565(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I422ToRGB565(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| int width, |
| int height); |
| |
| // Convert I420 To RGB565 with 4x4 dither matrix (16 bytes). |
| // Values in dither matrix from 0 to 7 recommended. |
| // The order of the dither matrix is first byte is upper left. |
| |
| LIBYUV_API |
| int I420ToRGB565Dither(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| const uint8_t* dither4x4, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToARGB1555(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb1555, |
| int dst_stride_argb1555, |
| int width, |
| int height); |
| |
| LIBYUV_API |
| int I420ToARGB4444(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb4444, |
| int dst_stride_argb4444, |
| int width, |
| int height); |
| |
| // Convert I420 to AR30. |
| LIBYUV_API |
| int I420ToAR30(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert H420 to AR30. |
| LIBYUV_API |
| int H420ToAR30(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| int width, |
| int height); |
| |
| // Convert I420 to ARGB with matrix. |
| LIBYUV_API |
| int I420ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I422 to ARGB with matrix. |
| LIBYUV_API |
| int I422ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I444 to ARGB with matrix. |
| LIBYUV_API |
| int I444ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // multiply 10 bit yuv into high bits to allow any number of bits. |
| LIBYUV_API |
| int I010ToAR30Matrix(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // multiply 10 bit yuv into high bits to allow any number of bits. |
| LIBYUV_API |
| int I210ToAR30Matrix(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert 10 bit YUV to ARGB with matrix. |
| LIBYUV_API |
| int I010ToARGBMatrix(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert 10 bit 422 YUV to ARGB with matrix. |
| LIBYUV_API |
| int I210ToARGBMatrix(const uint16_t* src_y, |
| int src_stride_y, |
| const uint16_t* src_u, |
| int src_stride_u, |
| const uint16_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I420 with Alpha to preattenuated ARGB with matrix. |
| LIBYUV_API |
| int I420AlphaToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| const uint8_t* src_a, |
| int src_stride_a, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height, |
| int attenuate); |
| |
| // Convert NV12 to ARGB with matrix. |
| LIBYUV_API |
| int NV12ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert NV21 to ARGB with matrix. |
| LIBYUV_API |
| int NV21ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert NV12 to RGB565 with matrix. |
| LIBYUV_API |
| int NV12ToRGB565Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert NV12 to RGB24 with matrix. |
| LIBYUV_API |
| int NV12ToRGB24Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_uv, |
| int src_stride_uv, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert NV21 to RGB24 with matrix. |
| LIBYUV_API |
| int NV21ToRGB24Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_vu, |
| int src_stride_vu, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert Android420 to ARGB with matrix. |
| LIBYUV_API |
| int Android420ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| int src_pixel_stride_uv, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I422 to RGBA with matrix. |
| LIBYUV_API |
| int I422ToRGBAMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgba, |
| int dst_stride_rgba, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I422 to RGBA with matrix. |
| LIBYUV_API |
| int I420ToRGBAMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgba, |
| int dst_stride_rgba, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I420 to RGB24 with matrix. |
| LIBYUV_API |
| int I420ToRGB24Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb24, |
| int dst_stride_rgb24, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I420 to RGB565 with specified color matrix. |
| LIBYUV_API |
| int I420ToRGB565Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_rgb565, |
| int dst_stride_rgb565, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I420 to AR30 with matrix. |
| LIBYUV_API |
| int I420ToAR30Matrix(const uint8_t* src_y, |
| int src_stride_y, |
| const uint8_t* src_u, |
| int src_stride_u, |
| const uint8_t* src_v, |
| int src_stride_v, |
| uint8_t* dst_ar30, |
| int dst_stride_ar30, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert I400 (grey) to ARGB. Reverse of ARGBToI400. |
| LIBYUV_API |
| int I400ToARGBMatrix(const uint8_t* src_y, |
| int src_stride_y, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| const struct YuvConstants* yuvconstants, |
| int width, |
| int height); |
| |
| // Convert camera sample to ARGB with cropping, rotation and vertical flip. |
| // "sample_size" is needed to parse MJPG. |
| // "dst_stride_argb" number of bytes in a row of the dst_argb plane. |
| // Normally this would be the same as dst_width, with recommended alignment |
| // to 16 bytes for better efficiency. |
| // If rotation of 90 or 270 is used, stride is affected. The caller should |
| // allocate the I420 buffer according to rotation. |
| // "dst_stride_u" number of bytes in a row of the dst_u plane. |
| // Normally this would be the same as (dst_width + 1) / 2, with |
| // recommended alignment to 16 bytes for better efficiency. |
| // If rotation of 90 or 270 is used, stride is affected. |
| // "crop_x" and "crop_y" are starting position for cropping. |
| // To center, crop_x = (src_width - dst_width) / 2 |
| // crop_y = (src_height - dst_height) / 2 |
| // "src_width" / "src_height" is size of src_frame in pixels. |
| // "src_height" can be negative indicating a vertically flipped image source. |
| // "crop_width" / "crop_height" is the size to crop the src to. |
| // Must be less than or equal to src_width/src_height |
| // Cropping parameters are pre-rotation. |
| // "rotation" can be 0, 90, 180 or 270. |
| // "fourcc" is a fourcc. ie 'I420', 'YUY2' |
| // Returns 0 for successful; -1 for invalid parameter. Non-zero for failure. |
| LIBYUV_API |
| int ConvertToARGB(const uint8_t* sample, |
| size_t sample_size, |
| uint8_t* dst_argb, |
| int dst_stride_argb, |
| int crop_x, |
| int crop_y, |
| int src_width, |
| int src_height, |
| int crop_width, |
| int crop_height, |
| enum RotationMode rotation, |
| uint32_t fourcc); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| } // namespace libyuv |
| #endif |
| |
| #endif // INCLUDE_LIBYUV_CONVERT_ARGB_H_ |