原始像素太卡 走ffmpeg
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <web_server/src/H264_Encoder.hpp>
|
||||
#include <web_server/src/media/detail/H264_Encoder.hpp>
|
||||
#include <chrono>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
namespace aethera::web {
|
||||
namespace aethera::web::media::detail {
|
||||
namespace {
|
||||
std::vector<std::byte> test_pattern(std::uint32_t width,
|
||||
std::uint32_t height) {
|
||||
@@ -34,13 +34,15 @@ TEST(H264_Encoder, Rejects_Invalid_Input_Before_FFmpeg) {
|
||||
const auto pixels = test_pattern(320, 180);
|
||||
EXPECT_THROW(static_cast<void>(encoder.encode(
|
||||
pixels, 319, 180, Video_Pixel_Layout::rgba,
|
||||
1, std::chrono::microseconds{33'333})),
|
||||
1, std::chrono::microseconds{33'333},
|
||||
std::chrono::nanoseconds{1})),
|
||||
std::invalid_argument);
|
||||
EXPECT_THROW(static_cast<void>(encoder.encode(
|
||||
std::span<const std::byte>{pixels}.first(
|
||||
pixels.size() - 1U),
|
||||
320, 180, Video_Pixel_Layout::rgba,
|
||||
1, std::chrono::microseconds{33'333})),
|
||||
1, std::chrono::microseconds{33'333},
|
||||
std::chrono::nanoseconds{1})),
|
||||
std::invalid_argument);
|
||||
}
|
||||
|
||||
@@ -57,11 +59,15 @@ TEST(H264_Encoder, Libx264_Produces_Ordered_Annex_B_Access_Units) {
|
||||
auto encoded = encoder.encode(
|
||||
pixels, width, height, Video_Pixel_Layout::rgba, sequence,
|
||||
std::chrono::microseconds{
|
||||
static_cast<std::int64_t>(sequence * 33'333)});
|
||||
static_cast<std::int64_t>(sequence * 33'333)},
|
||||
std::chrono::nanoseconds{
|
||||
static_cast<std::int64_t>(sequence * 1'000)});
|
||||
if (!encoded) continue;
|
||||
if (!first) first = encoded;
|
||||
EXPECT_EQ(encoded->sequence, sequence);
|
||||
EXPECT_EQ(encoded->backend, Video_Encoder_Backend::libx264);
|
||||
EXPECT_EQ(encoded->source_time_unix,
|
||||
std::chrono::nanoseconds{sequence * 1'000});
|
||||
EXPECT_FALSE(encoded->annex_b.empty());
|
||||
++produced;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user