OrangePi3588Media/tests/test_hw_factory.cpp
2026-01-16 18:16:25 +08:00

59 lines
1.8 KiB
C++

#include <gtest/gtest.h>
#include <vector>
#include "hw/frame_buffer.h"
#include "hw/hw_factory.h"
#include "hw/rk3588_defaults.h"
namespace rk3588 {
namespace {
TEST(HwFactoryTest, DefaultsReturnsRk3588Impls) {
SimpleJson config(SimpleJson::Object{});
auto infer = HwFactory::CreateInferBackend(config);
auto image = HwFactory::CreateImageProcessor(config);
auto decoder = HwFactory::CreateDecoder(config);
auto encoder = HwFactory::CreateEncoder(config);
EXPECT_NE(infer, nullptr);
EXPECT_NE(image, nullptr);
EXPECT_NE(decoder, nullptr);
EXPECT_NE(encoder, nullptr);
EXPECT_NE(std::dynamic_pointer_cast<Rk3588InferBackend>(infer), nullptr);
EXPECT_NE(std::dynamic_pointer_cast<Rk3588ImageProcessor>(image), nullptr);
EXPECT_NE(std::dynamic_pointer_cast<Rk3588Decoder>(decoder), nullptr);
EXPECT_NE(std::dynamic_pointer_cast<Rk3588Encoder>(encoder), nullptr);
}
TEST(FrameBufferTest, MetadataPreserved) {
FrameBuffer::Plane plane0;
plane0.data = reinterpret_cast<uint8_t*>(0x1000);
plane0.stride = 1280;
plane0.size = 921600;
plane0.offset = 0;
FrameBuffer::Plane plane1;
plane1.data = reinterpret_cast<uint8_t*>(0x2000);
plane1.stride = 640;
plane1.size = 460800;
plane1.offset = 921600;
std::vector<FrameBuffer::Plane> planes{plane0, plane1};
FrameBuffer buffer(42, planes);
EXPECT_EQ(buffer.DmaFd(), 42);
ASSERT_EQ(buffer.Planes().size(), 2u);
EXPECT_EQ(buffer.Planes()[0].stride, 1280);
EXPECT_EQ(buffer.Planes()[0].size, 921600);
EXPECT_EQ(buffer.Planes()[0].offset, 0);
EXPECT_EQ(buffer.Planes()[1].stride, 640);
EXPECT_EQ(buffer.Planes()[1].size, 460800);
EXPECT_EQ(buffer.Planes()[1].offset, 921600);
}
} // namespace
} // namespace rk3588