/* SPDX-License-Identifier: MIT
 * Copyright (c) 2026 Joerg Burbach.
 * Memory-only RFXL-26 codec. Successful output buffers belong to the caller.
 * Release them with free(). No PNG, file, display or operating-system API.
 */
#ifndef RFXL_H
#define RFXL_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
enum rfxl_quality { RFXL_CRAPPY, RFXL_LOW, RFXL_MID, RFXL_HIGH, RFXL_LOSSLESS };
typedef struct { uint32_t width, height; uint8_t channels, mode; } rfxl_info;
typedef struct { uint32_t width, height; uint8_t *rgba; } rfxl_image;
int rfxl_inspect(const uint8_t *data, size_t size, rfxl_info *info);
int rfxl_decode(const uint8_t *data, size_t size, rfxl_image *image);
int rfxl_encode(const rfxl_image *image, enum rfxl_quality quality, uint8_t **data, size_t *size);
/* Shared family payload decoder: Raw=0, RLE=1, BytePack=2, Rice=3, LZSS=4. */
uint8_t *rfxl_unpack(const uint8_t *, size_t, unsigned, size_t);
#ifdef __cplusplus
}
#endif
#endif
