| // Copyright 2023 Google LLC |
| // SPDX-License-Identifier: BSD-2-Clause |
| |
| #ifndef LIBAVIF_APPS_AVIFGAINMAPUTIL_IMAGEIO_H_ |
| #define LIBAVIF_APPS_AVIFGAINMAPUTIL_IMAGEIO_H_ |
| |
| #include <string> |
| |
| #include "avif/avif.h" |
| |
| namespace avif { |
| |
| // Writes an image in any of the supported formats based on the file extension. |
| // Grid images are supported by Avif only, grid_cols/grid_rows is ignored for |
| // other formats. |
| avifResult WriteImage(const avifImage* image, int grid_cols, int grid_rows, |
| const std::string& output_filename, int quality, |
| int speed); |
| // Reads an image in any of the supported formats. Ignores any gain map. |
| avifResult ReadImage(avifImage* image, const std::string& input_filename, |
| avifPixelFormat requested_format, uint32_t requested_depth, |
| bool ignore_profile); |
| |
| // Reads an image in avif format given a pre-configured encoder. |
| avifResult WriteAvif(const avifImage* image, avifEncoder* encoder, |
| const std::string& output_filename); |
| |
| // If grid_cols*grid_rows > 1, splits 'image' into a grid and writes it to an |
| // AVIF file. Otherwise, just writes a single AVIF image. |
| avifResult WriteAvifGrid(const avifImage* image, int grid_cols, int grid_rows, |
| avifEncoder* encoder, const std::string& filename); |
| |
| // Reads an image in avif format given a pre-configured decoder. |
| // The image can be accessed at decoder->image. |
| avifResult ReadAvif(avifDecoder* decoder, const std::string& input_filename, |
| bool ignore_profile); |
| |
| } // namespace avif |
| |
| #endif // LIBAVIF_APPS_AVIFGAINMAPUTIL_IMAGEIO_H_ |