/** * @file image.h * @brief JPEG decoding library. */ #pragma once #include "types.h" namespace nn { namespace image { // there's probably more enum JpegStatus { OK = 0, INVALID_FORMAT = -32, UNSUPPORTED_FORMAT = -33, OUT_OF_MEMORY = -64, }; enum PixelFormat { RGBA32, RGB24 }; enum ProcessStage { UNREGISTERED = 0, REGISTERED = 1, ANALYZED = 2 }; struct Dimension { f32 width; f32 height; }; class JpegDecoder { public: JpegDecoder(); virtual ~JpegDecoder(); void SetImageData(void const *source, u64 size); nn::image::JpegStatus Analyze(); nn::image::Dimension GetAnalyzedDimension() const; s64 GetAnalyzedWorkBufferSize() const; JpegStatus Decode(void *out, s64, s32 alignment, void *, s64); nn::image::ProcessStage mProcessStage; // _8 void* mData; // _C s64 mSize; // _14 s32 _18; nn::image::PixelFormat mFormat; // _1C Dimension mImgDimensions; // _20 s64 _28; // rest is related to EXIF processing }; }; };