21 #include <gtest/gtest.h> 52 const std::string & codec)
54 int_map_ = {{
"output_width", output_width},
55 {
"output_height", output_height},
56 {
"fps_numerator", fps_num},
57 {
"fps_denominator", fps_denom},
58 {
"bitrate", bitrate}};
59 string_map_ = {{
"codec", codec}};
65 std::string name = FormatParameterPath(param_path);
66 if (int_map_.count(name) > 0) {
67 out = int_map_.at(name);
81 std::string name = FormatParameterPath(param_path);
82 if (string_map_.count(name) > 0) {
83 out = string_map_.at(name);
92 std::string name = FormatParameterPath(param_path);
93 if (string_map_.count(name) > 0) {
94 out = string_map_.at(name).c_str();
128 TEST(H264EncoderCoreSuite, InitWithEmptyParamServer)
132 auto encoder = std::unique_ptr<H264Encoder>(
new H264Encoder());
138 EXPECT_FALSE(encoder->GetExtraData().empty());
144 TEST(H264EncoderCoreSuite, InitWithFullParamServer)
149 auto encoder = std::unique_ptr<H264Encoder>(
new H264Encoder());
155 EXPECT_FALSE(encoder->GetExtraData().empty());
161 TEST(H264EncoderCoreSuite, InitWithInvalidParamServer)
163 struct TestParamCollection
167 AVPixelFormat src_enc;
176 const std::array<TestParamCollection, 9> params_sweep = {
202 static_cast<AVPixelFormat
>(-1),
277 for (
const auto & p : params_sweep) {
278 TestParameterReader param_reader(p.dst_width, p.dst_height, p.fps_num, p.fps_denom, p.bitrate,
281 auto encoder = std::unique_ptr<H264Encoder>(
new H264Encoder());
283 AwsError result = encoder->Initialize(p.src_width, p.src_height, p.src_enc, param_reader);
289 static void RainbowColor(
const float h, uint8_t & r_out, uint8_t & g_out, uint8_t & b_out)
292 float f = 6.0f * h - i;
330 r_out = std::lround(255.0f * r);
331 g_out = std::lround(255.0f * g);
332 b_out = std::lround(255.0f * b);
338 TEST(H264EncoderCoreSuite, Encode)
343 auto encoder = std::unique_ptr<H264Encoder>(
new H264Encoder());
350 FILE * debug_file = fopen(
"frames.bin",
"wb");
355 int shift =
static_cast<float>(i) / (kDefaultFpsNumerator - 1) *
kDefaultSrcWidth;
359 RainbowColor(static_cast<float>((x + shift) % kDefaultSrcWidth) / kDefaultSrcWidth, r, g,
368 AwsError result = encoder->Encode(img_buffer, encoder_output);
379 fwrite(encoder->GetExtraData().data(), 1, encoder->GetExtraData().size(), debug_file);
389 int main(
int argc,
char ** argv)
391 testing::InitGoogleTest(&argc, argv);
392 return RUN_ALL_TESTS();
int main(int argc, char **argv)
TEST(H264EncoderCoreSuite, InitWithEmptyParamServer)
constexpr int kDefaultFpsNumerator
constexpr char kDefaultCodec[]
constexpr AVPixelFormat kDefaultSrcEncoding
constexpr int kDefaultFpsDenominator
std::map< std::string, std::string > string_map_
AwsError ReadParam(const ParameterPath ¶m_path, std::map< std::string, std::string > &out) const
constexpr int kDefaultSrcWidth
std::string get_resolved_path(char node_namespace_separator, char parameter_namespace_separator) const
constexpr int kBytesPerPixel
constexpr int kDefaultDstWidth
AwsError ReadParam(const ParameterPath ¶m_path, std::vector< std::string > &out) const
constexpr int kDefaultBitrate
std::vector< uint8_t > frame_data
constexpr int kDefaultDstHeight
constexpr int kDefaultSrcHeight
std::string FormatParameterPath(const ParameterPath ¶m_path) const
AwsError ReadParam(const ParameterPath ¶m_path, double &out) const
std::map< std::string, int > int_map_
TestParameterReader(int output_width, int output_height, int fps_num, int fps_denom, int bitrate, const std::string &codec)
AwsError ReadParam(const ParameterPath ¶m_path, int &out) const
AwsError ReadParam(const ParameterPath ¶m_path, Aws::String &out) const
AwsError ReadParam(const ParameterPath ¶m_path, std::string &out) const
static void RainbowColor(const float h, uint8_t &r_out, uint8_t &g_out, uint8_t &b_out)
AwsError ReadParam(const ParameterPath ¶m_path, bool &out) const