diff options
author | Sadaf Ebrahimi <sadafebrahimi@google.com> | 2023-08-28 15:48:16 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-08-28 15:48:16 +0000 |
commit | 38cc49a9243a8532cbb32b733f9ac1592e9e62e3 (patch) | |
tree | 5d9b28c2e73f9d5e76d9556181a6cf73ac4bd182 /source/scale_rgb.cc | |
parent | 12219ef4229dc1e24b5c8ed0d5c1dedc7f16cc9a (diff) | |
parent | 08f747f785e3032936ed9357560bc0ad39658287 (diff) | |
download | libyuv-38cc49a9243a8532cbb32b733f9ac1592e9e62e3.tar.gz |
Merge "Move libyuv/files/ directly under libyuv" into main am: 08f747f785
Original change: https://android-review.googlesource.com/c/platform/external/libyuv/+/2727019
Change-Id: Iebd6d95c7e80fed14d81d28a61d0c23d7bef36e1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'source/scale_rgb.cc')
-rw-r--r-- | source/scale_rgb.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/scale_rgb.cc b/source/scale_rgb.cc new file mode 100644 index 00000000..8db59b56 --- /dev/null +++ b/source/scale_rgb.cc @@ -0,0 +1,66 @@ +/* + * Copyright 2022 The LibYuv Project Authors. All rights reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "libyuv/scale.h" /* For FilterMode */ + +#include <assert.h> +#include <string.h> + +#include "libyuv/convert_argb.h" +#include "libyuv/convert_from_argb.h" +#include "libyuv/row.h" +#include "libyuv/scale_argb.h" +#include "libyuv/scale_rgb.h" + +#ifdef __cplusplus +namespace libyuv { +extern "C" { +#endif + +// Scale a 24 bit image. +// Converts to ARGB as intermediate step + +LIBYUV_API +int RGBScale(const uint8_t* src_rgb, + int src_stride_rgb, + int src_width, + int src_height, + uint8_t* dst_rgb, + int dst_stride_rgb, + int dst_width, + int dst_height, + enum FilterMode filtering) { + int r; + uint8_t* src_argb = + (uint8_t*)malloc(src_width * src_height * 4 + dst_width * dst_height * 4); + uint8_t* dst_argb = src_argb + src_width * src_height * 4; + + if (!src_argb) { + return 1; + } + + r = RGB24ToARGB(src_rgb, src_stride_rgb, src_argb, src_width * 4, src_width, + src_height); + if (!r) { + r = ARGBScale(src_argb, src_width * 4, src_width, src_height, dst_argb, + dst_width * 4, dst_width, dst_height, filtering); + if (!r) { + r = ARGBToRGB24(dst_argb, dst_width * 4, dst_rgb, dst_stride_rgb, + dst_width, dst_height); + } + } + free(src_argb); + return r; +} + +#ifdef __cplusplus +} // extern "C" +} // namespace libyuv +#endif |