/* * 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