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_SCALE_ARGB_H_  // NOLINT
1241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define INCLUDE_LIBYUV_SCALE_ARGB_H_
1341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#include "libyuv/basic_types.h"
1541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#include "libyuv/scale.h"  // For FilterMode
1641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
1841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgnamespace libyuv {
1941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgextern "C" {
2041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
2141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
2341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBScale(const uint8* src_argb, int src_stride_argb,
2441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              int src_width, int src_height,
2541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              uint8* dst_argb, int dst_stride_argb,
2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              int dst_width, int dst_height,
2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              enum FilterMode filtering);
2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Clipped scale takes destination rectangle coordinates for clip values.
3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint ARGBScaleClip(const uint8* src_argb, int src_stride_argb,
3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                  int src_width, int src_height,
3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                  uint8* dst_argb, int dst_stride_argb,
3441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                  int dst_width, int dst_height,
3541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                  int clip_x, int clip_y, int clip_width, int clip_height,
3641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                  enum FilterMode filtering);
3741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
3841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// TODO(fbarchard): Implement this.
3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Scale with YUV conversion to ARGB and clipping.
4041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
4141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgint YUVToARGBScaleClip(const uint8* src_y, int src_stride_y,
4241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       const uint8* src_u, int src_stride_u,
4341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       const uint8* src_v, int src_stride_v,
4441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       uint32 src_fourcc,
4541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       int src_width, int src_height,
4641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       uint8* dst_argb, int dst_stride_argb,
4741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       uint32 dst_fourcc,
4841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       int dst_width, int dst_height,
4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       int clip_x, int clip_y, int clip_width, int clip_height,
5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                       enum FilterMode filtering);
5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
5341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // extern "C"
5441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // namespace libyuv
5541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
5641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif  // INCLUDE_LIBYUV_SCALE_ARGB_H_  NOLINT
58