Files
oak-editor/tests/gtest/render_videoparams_branch_test.cpp
T
2026-01-05 03:40:36 +08:00

85 lines
2.4 KiB
C++

#include <gtest/gtest.h>
extern "C" {
#include <libavutil/avutil.h>
}
#include "render/videoparams.h"
TEST(RenderVideoParams, BytesPerChannelAndPixel)
{
EXPECT_EQ(olive::VideoParams::GetBytesPerChannel(
olive::core::PixelFormat::INVALID),
0);
EXPECT_EQ(olive::VideoParams::GetBytesPerChannel(
olive::core::PixelFormat::U8),
1);
EXPECT_EQ(olive::VideoParams::GetBytesPerChannel(
olive::core::PixelFormat::U16),
2);
EXPECT_EQ(olive::VideoParams::GetBytesPerChannel(
olive::core::PixelFormat::F16),
2);
EXPECT_EQ(olive::VideoParams::GetBytesPerChannel(
olive::core::PixelFormat::F32),
4);
EXPECT_EQ(olive::VideoParams::GetBytesPerPixel(
olive::core::PixelFormat::U8, 4),
4);
}
TEST(RenderVideoParams, DividerAndFormatNames)
{
EXPECT_EQ(olive::VideoParams::GetNameForDivider(1),
QStringLiteral("Full"));
EXPECT_EQ(olive::VideoParams::GetNameForDivider(3),
QStringLiteral("1/3"));
const QString unknown =
olive::VideoParams::GetFormatName(olive::core::PixelFormat::INVALID);
EXPECT_TRUE(unknown.contains(QStringLiteral("Unknown")));
}
TEST(RenderVideoParams, ScalingAndDividerForTarget)
{
EXPECT_EQ(olive::VideoParams::GetScaledDimension(100, 3), 33);
EXPECT_EQ(olive::VideoParams::GetDividerForTargetResolution(
1920, 1080, 960, 540),
2);
EXPECT_EQ(olive::VideoParams::GetDividerForTargetResolution(
1920, 1080, 480, 270),
4);
}
TEST(RenderVideoParams, FrameRateStringsAndPixelAspect)
{
const QString fps =
olive::VideoParams::FrameRateToString(olive::core::rational(24, 1));
EXPECT_TRUE(fps.contains(QStringLiteral("24")));
EXPECT_TRUE(fps.contains(QStringLiteral("FPS")));
const QStringList names =
olive::VideoParams::GetStandardPixelAspectRatioNames();
ASSERT_EQ(names.size(), 6);
EXPECT_TRUE(names.at(0).contains(QStringLiteral("1.0000")));
}
TEST(RenderVideoParams, ValidityAndTimebase)
{
olive::VideoParams params;
EXPECT_FALSE(params.is_valid());
EXPECT_EQ(params.get_time_in_timebase_units(olive::core::rational(1, 1)),
AV_NOPTS_VALUE);
params.set_width(1920);
params.set_height(1080);
params.set_format(olive::core::PixelFormat::U8);
params.set_channel_count(4);
params.set_pixel_aspect_ratio(olive::core::rational(1, 1));
params.set_time_base(olive::core::rational(1, 1));
params.set_start_time(10);
EXPECT_TRUE(params.is_valid());
EXPECT_EQ(params.get_time_in_timebase_units(olive::core::rational(2, 1)),
12);
}