#ifndef LIBAVIF_APPS_SHARED_AVIFUTIL_H
#define LIBAVIF_APPS_SHARED_AVIFUTIL_H
#include "avif/avif.h"
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(_UCRT) && (defined(__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO == 0)
#define AVIF_FMT_ZU "Iu"
#else
#define AVIF_FMT_ZU "zu"
#endif
void avifImageDump(const avifImage * avif, uint32_t gridCols, uint32_t gridRows, avifProgressiveState progressiveState);
void avifContainerDump(const avifDecoder * decoder);
void avifPrintVersions(void);
void avifDumpDiagnostics(const avifDiagnostics * diag);
int avifQueryCPUCount(void);
typedef enum avifAppFileFormat
{
AVIF_APP_FILE_FORMAT_UNKNOWN = 0,
AVIF_APP_FILE_FORMAT_AVIF,
AVIF_APP_FILE_FORMAT_JPEG,
AVIF_APP_FILE_FORMAT_PNG,
AVIF_APP_FILE_FORMAT_Y4M
} avifAppFileFormat;
avifAppFileFormat avifGuessFileFormat(const char * filename);
typedef struct avifAppSourceTiming
{
uint64_t duration; uint64_t timescale; } avifAppSourceTiming;
struct y4mFrameIterator;
avifAppFileFormat avifReadImage(const char * filename,
avifPixelFormat requestedFormat,
int requestedDepth,
avifChromaDownsampling chromaDownsampling,
avifBool ignoreColorProfile,
avifBool ignoreExif,
avifBool ignoreXMP,
avifBool allowChangingCicp,
avifImage * image,
uint32_t * outDepth,
avifAppSourceTiming * sourceTiming,
struct y4mFrameIterator ** frameIter);
void avifImageFixXMP(avifImage * image);
#define AVIF_APP_DEFAULT_PIXEL_FORMAT AVIF_PIXEL_FORMAT_YUV444
#ifdef __cplusplus
} #endif
#endif