141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org/* 241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * Copyright 2011 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_FORMATCONVERSION_H_ // NOLINT 1241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define INCLUDE_LIBYUV_FORMATCONVERSION_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// Convert Bayer RGB formats to I420. 2241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 2341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerBGGRToI420(const uint8* src_bayer, int src_stride_bayer, 2441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_y, int dst_stride_y, 2541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_u, int dst_stride_u, 2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_v, int dst_stride_v, 2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerGBRGToI420(const uint8* src_bayer, int src_stride_bayer, 3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_y, int dst_stride_y, 3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_u, int dst_stride_u, 3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_v, int dst_stride_v, 3441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 3541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 3641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 3741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerGRBGToI420(const uint8* src_bayer, int src_stride_bayer, 3841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_y, int dst_stride_y, 3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_u, int dst_stride_u, 4041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_v, int dst_stride_v, 4141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 4241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 4341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 4441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerRGGBToI420(const uint8* src_bayer, int src_stride_bayer, 4541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_y, int dst_stride_y, 4641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_u, int dst_stride_u, 4741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_v, int dst_stride_v, 4841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Temporary API mapper. 5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define BayerRGBToI420(b, bs, f, y, ys, u, us, v, vs, w, h) \ 5241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org BayerToI420(b, bs, y, ys, u, us, v, vs, w, h, f) 5341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 5441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 5541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerToI420(const uint8* src_bayer, int src_stride_bayer, 5641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_y, int dst_stride_y, 5741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_u, int dst_stride_u, 5841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_v, int dst_stride_v, 5941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height, 6041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 src_fourcc_bayer); 6141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 6241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert I420 to Bayer RGB formats. 6341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 6441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint I420ToBayerBGGR(const uint8* src_y, int src_stride_y, 6541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_u, int src_stride_u, 6641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_v, int src_stride_v, 6741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_frame, int dst_stride_frame, 6841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 6941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 7041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 7141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint I420ToBayerGBRG(const uint8* src_y, int src_stride_y, 7241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_u, int src_stride_u, 7341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_v, int src_stride_v, 7441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_frame, int dst_stride_frame, 7541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 7641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 7741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 7841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint I420ToBayerGRBG(const uint8* src_y, int src_stride_y, 7941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_u, int src_stride_u, 8041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_v, int src_stride_v, 8141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_frame, int dst_stride_frame, 8241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 8341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 8441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 8541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint I420ToBayerRGGB(const uint8* src_y, int src_stride_y, 8641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_u, int src_stride_u, 8741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_v, int src_stride_v, 8841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_frame, int dst_stride_frame, 8941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 9041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 9141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Temporary API mapper. 9241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define I420ToBayerRGB(y, ys, u, us, v, vs, b, bs, f, w, h) \ 9341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org I420ToBayer(y, ys, u, us, v, vs, b, bs, w, h, f) 9441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 9541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 9641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint I420ToBayer(const uint8* src_y, int src_stride_y, 9741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_u, int src_stride_u, 9841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org const uint8* src_v, int src_stride_v, 9941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_frame, int dst_stride_frame, 10041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height, 10141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 dst_fourcc_bayer); 10241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 10341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Convert Bayer RGB formats to ARGB. 10441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 10541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerBGGRToARGB(const uint8* src_bayer, int src_stride_bayer, 10641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_argb, int dst_stride_argb, 10741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 10841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 10941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 11041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerGBRGToARGB(const uint8* src_bayer, int src_stride_bayer, 11141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_argb, int dst_stride_argb, 11241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 11341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 11441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 11541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerGRBGToARGB(const uint8* src_bayer, int src_stride_bayer, 11641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_argb, int dst_stride_argb, 11741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 11841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 11941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 12041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerRGGBToARGB(const uint8* src_bayer, int src_stride_bayer, 12141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_argb, int dst_stride_argb, 12241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 12341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 12441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Temporary API mapper. 12541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define BayerRGBToARGB(b, bs, f, a, as, w, h) BayerToARGB(b, bs, a, as, w, h, f) 12641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 12741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 12841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint BayerToARGB(const uint8* src_bayer, int src_stride_bayer, 12941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_argb, int dst_stride_argb, 13041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height, 13141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 src_fourcc_bayer); 13241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 13341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Converts ARGB to Bayer RGB formats. 13441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 13541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBayerBGGR(const uint8* src_argb, int src_stride_argb, 13641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_bayer, int dst_stride_bayer, 13741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 13841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 13941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 14041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBayerGBRG(const uint8* src_argb, int src_stride_argb, 14141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_bayer, int dst_stride_bayer, 14241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 14341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 14441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 14541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBayerGRBG(const uint8* src_argb, int src_stride_argb, 14641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_bayer, int dst_stride_bayer, 14741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 14841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 14941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 15041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBayerRGGB(const uint8* src_argb, int src_stride_argb, 15141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_bayer, int dst_stride_bayer, 15241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height); 15341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 15441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Temporary API mapper. 15541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define ARGBToBayerRGB(a, as, b, bs, f, w, h) ARGBToBayer(b, bs, a, as, w, h, f) 15641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 15741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 15841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBToBayer(const uint8* src_argb, int src_stride_argb, 15941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint8* dst_bayer, int dst_stride_bayer, 16041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int width, int height, 16141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 dst_fourcc_bayer); 16241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 16341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus 16441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org} // extern "C" 16541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org} // namespace libyuv 16641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif 16741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 16841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif // INCLUDE_LIBYUV_FORMATCONVERSION_H_ NOLINT 169