#include "avif_fuzztest_helpers.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstdlib>
#include <iostream>
#include <utility>
#include <vector>
#include "avif/avif.h"
#include "avifutil.h"
#include "fuzztest/fuzztest.h"
#include "gtest/gtest.h"
namespace avif {
namespace testutil {
namespace {
ImagePtr CreateAvifImage(size_t width, size_t height, int depth,
avifPixelFormat pixel_format, bool has_alpha,
const uint8_t* samples) { … }
}
ImagePtr CreateAvifImage8b(size_t width, size_t height,
avifPixelFormat pixel_format, bool has_alpha,
const std::vector<uint8_t>& samples) { … }
ImagePtr CreateAvifImage16b(size_t width, size_t height, int depth,
avifPixelFormat pixel_format, bool has_alpha,
const std::vector<uint16_t>& samples) { … }
std::vector<ImagePtr> CreateAvifAnim8b(size_t num_frames, size_t width,
size_t height,
avifPixelFormat pixel_format,
bool has_alpha,
const std::vector<uint8_t>& samples) { … }
std::vector<ImagePtr> CreateAvifAnim16b(size_t num_frames, size_t width,
size_t height, int depth,
avifPixelFormat pixel_format,
bool has_alpha,
const std::vector<uint16_t>& samples) { … }
EncoderPtr CreateAvifEncoder(avifCodecChoice codec_choice, int max_threads,
int min_quantizer, int max_quantizer,
int min_quantizer_alpha, int max_quantizer_alpha,
int tile_rows_log2, int tile_cols_log2,
int speed) { … }
DecoderPtr CreateAvifDecoder(avifCodecChoice codec_choice, int max_threads,
avifDecoderSource requested_source,
bool allow_progressive, bool allow_incremental,
bool ignore_exif, bool ignore_xmp,
uint32_t image_size_limit,
uint32_t image_dimension_limit,
uint32_t image_count_limit,
avifStrictFlags strict_flags) { … }
ImagePtr AvifImageToUniquePtr(avifImage* image) { … }
#if defined(AVIF_ENABLE_EXPERIMENTAL_GAIN_MAP)
DecoderPtr AddGainMapOptionsToDecoder(DecoderPtr decoder,
GainMapDecodeMode gain_map_decode_mode) { … }
#endif
size_t GetNumSamples(size_t num_frames, size_t width, size_t height,
avifPixelFormat pixel_format, bool has_alpha) { … }
namespace {
class Environment : public ::testing::Environment { … };
}
::testing::Environment* SetEnv(const char* name, const char* value) { … }
std::vector<std::string> GetSeedDataDirs() { … }
std::vector<std::string> GetTestImagesContents(
size_t max_file_size, const std::vector<avifAppFileFormat>& image_formats) { … }
}
}