Source code

Revision control

Copy as Markdown

Other Tools

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