MCPcopy Create free account
hub / github.com/AOMediaCodec/libavif / TestEncodeDecode

Function TestEncodeDecode

tests/gtest/avifchangesettingtest.cc:19–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17//------------------------------------------------------------------------------
18
19void TestEncodeDecode(avifCodecChoice codec,
20 const std::map<std::string, std::string>& init_cs_options,
21 bool can_encode, bool use_cq) {
22 if (avifCodecName(codec, AVIF_CODEC_FLAG_CAN_ENCODE) == nullptr) {
23 GTEST_SKIP() << "Codec unavailable, skip test.";
24 }
25
26 constexpr uint32_t kImageSize = 512;
27 ImagePtr image = testutil::CreateImage(kImageSize, kImageSize, /*depth=*/8,
28 AVIF_PIXEL_FORMAT_YUV420,
29 AVIF_PLANES_YUV, AVIF_RANGE_FULL);
30 ASSERT_NE(image, nullptr);
31 testutil::FillImageGradient(image.get());
32
33 // Encode
34 EncoderPtr encoder(avifEncoderCreate());
35 ASSERT_NE(encoder, nullptr);
36 encoder->codecChoice = codec;
37 encoder->speed = AVIF_SPEED_FASTEST;
38 encoder->timescale = 1;
39
40 for (const auto& option : init_cs_options) {
41 ASSERT_EQ(avifEncoderSetCodecSpecificOption(
42 encoder.get(), option.first.c_str(), option.second.c_str()),
43 AVIF_RESULT_OK);
44 }
45
46 if (use_cq) {
47 encoder->minQuantizer = 0;
48 encoder->maxQuantizer = 63;
49 ASSERT_EQ(
50 avifEncoderSetCodecSpecificOption(encoder.get(), "end-usage", "q"),
51 AVIF_RESULT_OK);
52 ASSERT_EQ(
53 avifEncoderSetCodecSpecificOption(encoder.get(), "cq-level", "63"),
54 AVIF_RESULT_OK);
55 } else {
56 encoder->minQuantizer = 63;
57 encoder->maxQuantizer = 63;
58 }
59
60 ASSERT_EQ(avifEncoderAddImage(encoder.get(), image.get(), 1,
61 AVIF_ADD_IMAGE_FLAG_FORCE_KEYFRAME),
62 AVIF_RESULT_OK);
63
64 if (use_cq) {
65 ASSERT_EQ(avifEncoderSetCodecSpecificOption(encoder.get(), "cq-level", "0"),
66 AVIF_RESULT_OK);
67 } else {
68 encoder->minQuantizer = 0;
69 encoder->maxQuantizer = 0;
70 }
71
72 if (!can_encode) {
73 ASSERT_EQ(avifEncoderAddImage(encoder.get(), image.get(), 1,
74 AVIF_ADD_IMAGE_FLAG_FORCE_KEYFRAME),
75 AVIF_RESULT_NOT_IMPLEMENTED);
76

Callers 1

TESTFunction · 0.85

Calls 13

avifCodecNameFunction · 0.85
CreateImageFunction · 0.85
FillImageGradientFunction · 0.85
avifEncoderCreateFunction · 0.85
avifEncoderAddImageFunction · 0.85
avifEncoderFinishFunction · 0.85
avifDecoderCreateFunction · 0.85
avifIOCreateMemoryReaderFunction · 0.85
avifDecoderSetIOFunction · 0.85
avifDecoderParseFunction · 0.85

Tested by

no test coverage detected