133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp/* 233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Copyright 2011 The LibYuv Project Authors. All rights reserved. 333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * 433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Use of this source code is governed by a BSD-style license 533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * that can be found in the LICENSE file in the root of the source 633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * tree. An additional intellectual property rights grant can be found 733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * in the file PATENTS. All contributing project authors may 833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * be found in the AUTHORS file in the root of the source tree. 933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp */ 1033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef INCLUDE_LIBYUV_CONVERT_FROM_H_ // NOLINT 1233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define INCLUDE_LIBYUV_CONVERT_FROM_H_ 1333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include "libyuv/basic_types.h" 1533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include "libyuv/rotate.h" 1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 1833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampnamespace libyuv { 1933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampextern "C" { 2033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 2133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// See Also convert.h for conversions from formats to I420. 2333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// I420Copy in convert to I420ToI420. 2533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2633cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 2733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToI422(const uint8* src_y, int src_stride_y, 2833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 2933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 3033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_y, int dst_stride_y, 3133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_u, int dst_stride_u, 3233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_v, int dst_stride_v, 3333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 3433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 3533cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 3633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToI444(const uint8* src_y, int src_stride_y, 3733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 3833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 3933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_y, int dst_stride_y, 4033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_u, int dst_stride_u, 4133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_v, int dst_stride_v, 4233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 4333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 4433cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 4533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToI411(const uint8* src_y, int src_stride_y, 4633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 4733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 4833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_y, int dst_stride_y, 4933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_u, int dst_stride_u, 5033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_v, int dst_stride_v, 5133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 5233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 5333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Copy to I400. Source can be I420, I422, I444, I400, NV12 or NV21. 5433cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 5533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I400Copy(const uint8* src_y, int src_stride_y, 5633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_y, int dst_stride_y, 5733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 5833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 5933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// TODO(fbarchard): I420ToNV12 6033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// TODO(fbarchard): I420ToM420 6133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// TODO(fbarchard): I420ToQ420 6233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 6333cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 6433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToYUY2(const uint8* src_y, int src_stride_y, 6533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 6633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 6733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 6833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 6933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 7033cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 7133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToUYVY(const uint8* src_y, int src_stride_y, 7233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 7333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 7433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 7533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 7633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 7733cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 7833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToV210(const uint8* src_y, int src_stride_y, 7933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 8033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 8133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 8233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 8333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 8433cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 8533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToARGB(const uint8* src_y, int src_stride_y, 8633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 8733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 8833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_argb, int dst_stride_argb, 8933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 9033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 9133cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 9233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToBGRA(const uint8* src_y, int src_stride_y, 9333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 9433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 9533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_argb, int dst_stride_argb, 9633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 9733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 9833cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 9933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToABGR(const uint8* src_y, int src_stride_y, 10033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 10133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 10233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_argb, int dst_stride_argb, 10333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 10433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 10533cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 10633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToRGBA(const uint8* src_y, int src_stride_y, 10733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 10833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 10933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_rgba, int dst_stride_rgba, 11033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 11133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 11233cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 11333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToRGB24(const uint8* src_y, int src_stride_y, 11433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 11533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 11633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 11733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 11833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 11933cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 12033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToRAW(const uint8* src_y, int src_stride_y, 12133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 12233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 12333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 12433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 12533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 12633cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 12733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToRGB565(const uint8* src_y, int src_stride_y, 12833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 12933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 13033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 13133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 13233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 13333cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 13433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToARGB1555(const uint8* src_y, int src_stride_y, 13533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 13633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 13733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 13833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 13933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 14033cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 14133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint I420ToARGB4444(const uint8* src_y, int src_stride_y, 14233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_u, int src_stride_u, 14333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* src_v, int src_stride_v, 14433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_frame, int dst_stride_frame, 14533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height); 14633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 14733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Note Bayer formats (BGGR) To I420 are in format_conversion.h. 14833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 14933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Convert I420 to specified format. 15033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// "dst_sample_stride" is bytes in a row for the destination. Pass 0 if the 15133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// buffer has contiguous rows. Can be negative. A multiple of 16 is optimal. 15233cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 15333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampint ConvertFromI420(const uint8* y, int y_stride, 15433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* u, int u_stride, 15533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const uint8* v, int v_stride, 15633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* dst_sample, int dst_sample_stride, 15733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width, int height, 15833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint32 format); 15933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 16033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 16133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} // extern "C" 16233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} // namespace libyuv 16333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 16433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 16533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // INCLUDE_LIBYUV_CONVERT_FROM_H_ NOLINT 166