| /* |
| * Copyright (c) 2025, Alliance for Open Media. All rights reserved. |
| * |
| * This source code is subject to the terms of the BSD 2 Clause License and |
| * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| * was not distributed with this source code in the LICENSE file, you can |
| * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| * Media Patent License 1.0 was not distributed with this source code in the |
| * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| */ |
| #include "gtest/gtest.h" |
| |
| #include "av1/encoder/encoder.h" |
| |
| namespace { |
| |
| /* clang-format off */ |
| // Test the example taken from av1_dilate_block() |
| constexpr uint8_t kSource[] = { 0, 0, 1, 2, 255, 3, 4, 0, 0, |
| 0, 5, 6, 255, 255, 255, 7, 8, 0, |
| 0, 255, 255, 255, 255, 255, 255, 255, 0, |
| 0, 255, 255, 255, 255, 255, 255, 255, 0, |
| 0, 9, 10, 255, 255, 255, 11, 12, 0, |
| 0, 0, 13, 14, 255, 15, 16, 0, 0}; |
| |
| constexpr uint8_t kExpected[] = { 0, 0, 255, 255, 255, 255, 255, 0, 0, |
| 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 0, 0, 255, 255, 255, 255, 255, 0, 0}; |
| /* clang-format on */ |
| |
| constexpr int kWidth = 9; |
| constexpr int kHeight = 6; |
| |
| TEST(ScreenContentDetectionMode2, FindDominantValue) { |
| // Find the dominant value of kSource[], which should be 255, |
| // as it appears 22 times. This is in contrast to 0 (16 times). |
| EXPECT_EQ(av1_find_dominant_value(kSource, kWidth, /*rows=*/kHeight, |
| /*cols=*/kWidth), |
| 255); |
| } |
| |
| TEST(ScreenContentDetectionMode2, DilateBlock) { |
| uint8_t dilated[kWidth * kHeight] = { 0 }; |
| |
| av1_dilate_block(kSource, kWidth, dilated, kWidth, /*rows=*/kHeight, |
| /*cols=*/kWidth); |
| |
| // Compare values coming from av1_dilate_block() against the expected values |
| for (int r = 0; r < kHeight; ++r) { |
| for (int c = 0; c < kWidth; ++c) { |
| EXPECT_EQ(kExpected[r * kHeight + c], dilated[r * kHeight + c]); |
| } |
| } |
| } |
| |
| } // namespace |