1ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian/*
2ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  Copyright 2012 The LibYuv Project Authors. All rights reserved.
3ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *
4ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  Use of this source code is governed by a BSD-style license
5ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  that can be found in the LICENSE file in the root of the source
6ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  tree. An additional intellectual property rights grant can be found
7ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  in the file PATENTS. All contributing project authors may
8ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *  be found in the AUTHORS file in the root of the source tree.
9ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian */
10ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
11ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifndef INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_  // NOLINT
12ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#define INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_
13ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
14ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#include "libyuv/basic_types.h"
15ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
16ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifdef __cplusplus
17ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniannamespace libyuv {
18ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianextern "C" {
19ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif
20ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
21ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Copy ARGB to ARGB.
22ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#define ARGBToARGB ARGBCopy
23ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
24ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBCopy(const uint8* src_argb, int src_stride_argb,
25ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian             uint8* dst_argb, int dst_stride_argb,
26ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian             int width, int height);
27ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
28ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To BGRA.
29ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
30ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToBGRA(const uint8* src_argb, int src_stride_argb,
31ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_bgra, int dst_stride_bgra,
32ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
33ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
34ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To ABGR.
35ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
36ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToABGR(const uint8* src_argb, int src_stride_argb,
37ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_abgr, int dst_stride_abgr,
38ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
39ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
40ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To RGBA.
41ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
42ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToRGBA(const uint8* src_argb, int src_stride_argb,
43ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_rgba, int dst_stride_rgba,
44ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
45ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
46ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To RGB24.
47ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
48ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToRGB24(const uint8* src_argb, int src_stride_argb,
49ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                uint8* dst_rgb24, int dst_stride_rgb24,
50ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                int width, int height);
51ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
52ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To RAW.
53ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
54ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToRAW(const uint8* src_argb, int src_stride_argb,
55ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian              uint8* dst_rgb, int dst_stride_rgb,
56ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian              int width, int height);
57ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
58ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To RGB565.
59ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
60ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToRGB565(const uint8* src_argb, int src_stride_argb,
61ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                 uint8* dst_rgb565, int dst_stride_rgb565,
62ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                 int width, int height);
63ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
64ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To ARGB1555.
65ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
66ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToARGB1555(const uint8* src_argb, int src_stride_argb,
67ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                   uint8* dst_argb1555, int dst_stride_argb1555,
68ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                   int width, int height);
69ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
70ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To ARGB4444.
71ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
72ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToARGB4444(const uint8* src_argb, int src_stride_argb,
73ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                   uint8* dst_argb4444, int dst_stride_argb4444,
74ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                   int width, int height);
75ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
76ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To I444.
77ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
78ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToI444(const uint8* src_argb, int src_stride_argb,
79ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
80ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_u, int dst_stride_u,
81ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_v, int dst_stride_v,
82ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
83ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
84ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To I422.
85ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
86ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToI422(const uint8* src_argb, int src_stride_argb,
87ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
88ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_u, int dst_stride_u,
89ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_v, int dst_stride_v,
90ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
91ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
92ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To I420. (also in convert.h)
93ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
94ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToI420(const uint8* src_argb, int src_stride_argb,
95ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
96ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_u, int dst_stride_u,
97ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_v, int dst_stride_v,
98ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
99ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
100ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB to J420. (JPeg full range I420).
101ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
102ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToJ420(const uint8* src_argb, int src_stride_argb,
103ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_yj, int dst_stride_yj,
104ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_u, int dst_stride_u,
105ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_v, int dst_stride_v,
106ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
107ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
108ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To I411.
109ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
110ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToI411(const uint8* src_argb, int src_stride_argb,
111ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
112ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_u, int dst_stride_u,
113ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_v, int dst_stride_v,
114ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
115ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
116ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB to J400. (JPeg full range).
117ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
118ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToJ400(const uint8* src_argb, int src_stride_argb,
119ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_yj, int dst_stride_yj,
120ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
121ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
122ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB to I400.
123ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
124ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToI400(const uint8* src_argb, int src_stride_argb,
125ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
126ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
127ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
128ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To NV12.
129ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
130ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToNV12(const uint8* src_argb, int src_stride_argb,
131ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
132ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_uv, int dst_stride_uv,
133ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
134ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
135ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To NV21.
136ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
137ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToNV21(const uint8* src_argb, int src_stride_argb,
138ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
139ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_vu, int dst_stride_vu,
140ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
141ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
142ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To NV21.
143ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
144ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToNV21(const uint8* src_argb, int src_stride_argb,
145ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_y, int dst_stride_y,
146ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_vu, int dst_stride_vu,
147ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
148ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
149ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To YUY2.
150ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
151ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToYUY2(const uint8* src_argb, int src_stride_argb,
152ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_yuy2, int dst_stride_yuy2,
153ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
154ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
155ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// Convert ARGB To UYVY.
156ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API
157ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianint ARGBToUYVY(const uint8* src_argb, int src_stride_argb,
158ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               uint8* dst_uyvy, int dst_stride_uyvy,
159ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian               int width, int height);
160ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
161ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifdef __cplusplus
162ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian}  // extern "C"
163ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian}  // namespace libyuv
164ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif
165ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
166ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif  // INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_  NOLINT
167