141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org/*
241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  Copyright 2012 The LibYuv Project Authors. All rights reserved.
341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *
441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  Use of this source code is governed by a BSD-style license
541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  that can be found in the LICENSE file in the root of the source
641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  tree. An additional intellectual property rights grant can be found
741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  in the file PATENTS. All contributing project authors may
841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  be found in the AUTHORS file in the root of the source tree.
941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org */
1041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifndef INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_  // NOLINT
1241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_
1341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#include "libyuv/basic_types.h"
1541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
1741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgnamespace libyuv {
1841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgextern "C" {
1941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
2041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Copy ARGB to ARGB.
2241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define ARGBToARGB ARGBCopy
2341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
2441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBCopy(const uint8* src_argb, int src_stride_argb,
2541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org             uint8* dst_argb, int dst_stride_argb,
2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org             int width, int height);
2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To BGRA.
2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBGRA(const uint8* src_argb, int src_stride_argb,
3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_bgra, int dst_stride_bgra,
3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
3441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To ABGR.
3541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
3641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToABGR(const uint8* src_argb, int src_stride_argb,
3741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_abgr, int dst_stride_abgr,
3841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
4041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To RGBA.
4141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
4241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToRGBA(const uint8* src_argb, int src_stride_argb,
4341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_rgba, int dst_stride_rgba,
4441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
4541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
4641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To RGB24.
4741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
4841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToRGB24(const uint8* src_argb, int src_stride_argb,
4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                uint8* dst_rgb24, int dst_stride_rgb24,
5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                int width, int height);
5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To RAW.
5341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
5441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToRAW(const uint8* src_argb, int src_stride_argb,
5541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              uint8* dst_rgb, int dst_stride_rgb,
5641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              int width, int height);
5741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To RGB565.
5941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
6041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToRGB565(const uint8* src_argb, int src_stride_argb,
6141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                 uint8* dst_rgb565, int dst_stride_rgb565,
6241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                 int width, int height);
6341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
6441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To ARGB1555.
6541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
6641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToARGB1555(const uint8* src_argb, int src_stride_argb,
6741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                   uint8* dst_argb1555, int dst_stride_argb1555,
6841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                   int width, int height);
6941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
7041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To ARGB4444.
7141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
7241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToARGB4444(const uint8* src_argb, int src_stride_argb,
7341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                   uint8* dst_argb4444, int dst_stride_argb4444,
7441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                   int width, int height);
7541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
7641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To I444.
7741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
7841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToI444(const uint8* src_argb, int src_stride_argb,
7941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
8041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_u, int dst_stride_u,
8141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_v, int dst_stride_v,
8241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
8341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
8441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To I422.
8541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
8641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToI422(const uint8* src_argb, int src_stride_argb,
8741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
8841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_u, int dst_stride_u,
8941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_v, int dst_stride_v,
9041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
9141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
9241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To I420. (also in convert.h)
9341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
9441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToI420(const uint8* src_argb, int src_stride_argb,
9541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
9641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_u, int dst_stride_u,
9741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_v, int dst_stride_v,
9841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
9941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
10041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB to J420. (JPeg full range I420).
10141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
10241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToJ420(const uint8* src_argb, int src_stride_argb,
10341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_yj, int dst_stride_yj,
10441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_u, int dst_stride_u,
10541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_v, int dst_stride_v,
10641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
10741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
10841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To I411.
10941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
11041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToI411(const uint8* src_argb, int src_stride_argb,
11141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
11241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_u, int dst_stride_u,
11341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_v, int dst_stride_v,
11441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
11541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
11641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB to J400. (JPeg full range).
11741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
11841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToJ400(const uint8* src_argb, int src_stride_argb,
11941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_yj, int dst_stride_yj,
12041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
12141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
12241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB to I400.
12341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
12441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToI400(const uint8* src_argb, int src_stride_argb,
12541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
12641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
12741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
12841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To NV12.
12941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
13041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToNV12(const uint8* src_argb, int src_stride_argb,
13141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
13241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_uv, int dst_stride_uv,
13341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
13441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
13541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To NV21.
13641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
13741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToNV21(const uint8* src_argb, int src_stride_argb,
13841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
13941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_vu, int dst_stride_vu,
14041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
14141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
14241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To NV21.
14341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
14441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToNV21(const uint8* src_argb, int src_stride_argb,
14541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_y, int dst_stride_y,
14641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_vu, int dst_stride_vu,
14741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
14841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
14941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To YUY2.
15041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
15141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToYUY2(const uint8* src_argb, int src_stride_argb,
15241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_yuy2, int dst_stride_yuy2,
15341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
15441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
15541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert ARGB To UYVY.
15641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
15741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToUYVY(const uint8* src_argb, int src_stride_argb,
15841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               uint8* dst_uyvy, int dst_stride_uyvy,
15941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org               int width, int height);
16041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
16141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
16241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // extern "C"
16341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // namespace libyuv
16441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
16541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
16641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif  // INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_  NOLINT
167