1/* 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11#ifndef INCLUDE_LIBYUV_FORMATCONVERSION_H_ // NOLINT 12#define INCLUDE_LIBYUV_FORMATCONVERSION_H_ 13 14#include "libyuv/basic_types.h" 15 16#ifdef __cplusplus 17namespace libyuv { 18extern "C" { 19#endif 20 21// Convert Bayer RGB formats to I420. 22LIBYUV_API 23int BayerBGGRToI420(const uint8* src_bayer, int src_stride_bayer, 24 uint8* dst_y, int dst_stride_y, 25 uint8* dst_u, int dst_stride_u, 26 uint8* dst_v, int dst_stride_v, 27 int width, int height); 28 29LIBYUV_API 30int BayerGBRGToI420(const uint8* src_bayer, int src_stride_bayer, 31 uint8* dst_y, int dst_stride_y, 32 uint8* dst_u, int dst_stride_u, 33 uint8* dst_v, int dst_stride_v, 34 int width, int height); 35 36LIBYUV_API 37int BayerGRBGToI420(const uint8* src_bayer, int src_stride_bayer, 38 uint8* dst_y, int dst_stride_y, 39 uint8* dst_u, int dst_stride_u, 40 uint8* dst_v, int dst_stride_v, 41 int width, int height); 42 43LIBYUV_API 44int BayerRGGBToI420(const uint8* src_bayer, int src_stride_bayer, 45 uint8* dst_y, int dst_stride_y, 46 uint8* dst_u, int dst_stride_u, 47 uint8* dst_v, int dst_stride_v, 48 int width, int height); 49 50// Temporary API mapper. 51#define BayerRGBToI420(b, bs, f, y, ys, u, us, v, vs, w, h) \ 52 BayerToI420(b, bs, y, ys, u, us, v, vs, w, h, f) 53 54LIBYUV_API 55int BayerToI420(const uint8* src_bayer, int src_stride_bayer, 56 uint8* dst_y, int dst_stride_y, 57 uint8* dst_u, int dst_stride_u, 58 uint8* dst_v, int dst_stride_v, 59 int width, int height, 60 uint32 src_fourcc_bayer); 61 62// Convert I420 to Bayer RGB formats. 63LIBYUV_API 64int I420ToBayerBGGR(const uint8* src_y, int src_stride_y, 65 const uint8* src_u, int src_stride_u, 66 const uint8* src_v, int src_stride_v, 67 uint8* dst_frame, int dst_stride_frame, 68 int width, int height); 69 70LIBYUV_API 71int I420ToBayerGBRG(const uint8* src_y, int src_stride_y, 72 const uint8* src_u, int src_stride_u, 73 const uint8* src_v, int src_stride_v, 74 uint8* dst_frame, int dst_stride_frame, 75 int width, int height); 76 77LIBYUV_API 78int I420ToBayerGRBG(const uint8* src_y, int src_stride_y, 79 const uint8* src_u, int src_stride_u, 80 const uint8* src_v, int src_stride_v, 81 uint8* dst_frame, int dst_stride_frame, 82 int width, int height); 83 84LIBYUV_API 85int I420ToBayerRGGB(const uint8* src_y, int src_stride_y, 86 const uint8* src_u, int src_stride_u, 87 const uint8* src_v, int src_stride_v, 88 uint8* dst_frame, int dst_stride_frame, 89 int width, int height); 90 91// Temporary API mapper. 92#define I420ToBayerRGB(y, ys, u, us, v, vs, b, bs, f, w, h) \ 93 I420ToBayer(y, ys, u, us, v, vs, b, bs, w, h, f) 94 95LIBYUV_API 96int I420ToBayer(const uint8* src_y, int src_stride_y, 97 const uint8* src_u, int src_stride_u, 98 const uint8* src_v, int src_stride_v, 99 uint8* dst_frame, int dst_stride_frame, 100 int width, int height, 101 uint32 dst_fourcc_bayer); 102 103// Convert Bayer RGB formats to ARGB. 104LIBYUV_API 105int BayerBGGRToARGB(const uint8* src_bayer, int src_stride_bayer, 106 uint8* dst_argb, int dst_stride_argb, 107 int width, int height); 108 109LIBYUV_API 110int BayerGBRGToARGB(const uint8* src_bayer, int src_stride_bayer, 111 uint8* dst_argb, int dst_stride_argb, 112 int width, int height); 113 114LIBYUV_API 115int BayerGRBGToARGB(const uint8* src_bayer, int src_stride_bayer, 116 uint8* dst_argb, int dst_stride_argb, 117 int width, int height); 118 119LIBYUV_API 120int BayerRGGBToARGB(const uint8* src_bayer, int src_stride_bayer, 121 uint8* dst_argb, int dst_stride_argb, 122 int width, int height); 123 124// Temporary API mapper. 125#define BayerRGBToARGB(b, bs, f, a, as, w, h) BayerToARGB(b, bs, a, as, w, h, f) 126 127LIBYUV_API 128int BayerToARGB(const uint8* src_bayer, int src_stride_bayer, 129 uint8* dst_argb, int dst_stride_argb, 130 int width, int height, 131 uint32 src_fourcc_bayer); 132 133// Converts ARGB to Bayer RGB formats. 134LIBYUV_API 135int ARGBToBayerBGGR(const uint8* src_argb, int src_stride_argb, 136 uint8* dst_bayer, int dst_stride_bayer, 137 int width, int height); 138 139LIBYUV_API 140int ARGBToBayerGBRG(const uint8* src_argb, int src_stride_argb, 141 uint8* dst_bayer, int dst_stride_bayer, 142 int width, int height); 143 144LIBYUV_API 145int ARGBToBayerGRBG(const uint8* src_argb, int src_stride_argb, 146 uint8* dst_bayer, int dst_stride_bayer, 147 int width, int height); 148 149LIBYUV_API 150int ARGBToBayerRGGB(const uint8* src_argb, int src_stride_argb, 151 uint8* dst_bayer, int dst_stride_bayer, 152 int width, int height); 153 154// Temporary API mapper. 155#define ARGBToBayerRGB(a, as, b, bs, f, w, h) ARGBToBayer(b, bs, a, as, w, h, f) 156 157LIBYUV_API 158int ARGBToBayer(const uint8* src_argb, int src_stride_argb, 159 uint8* dst_bayer, int dst_stride_bayer, 160 int width, int height, 161 uint32 dst_fourcc_bayer); 162 163#ifdef __cplusplus 164} // extern "C" 165} // namespace libyuv 166#endif 167 168#endif // INCLUDE_LIBYUV_FORMATCONVERSION_H_ NOLINT 169