// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "config.hpp" #include "status.hpp" #include "ptv.hpp" namespace VideoStitch { namespace Util { class VS_EXPORT ImageProcessing { public: static Status findCropCircle(const int& width, const int& height, void* data, int& x, int& y, int& r, const VideoStitch::Ptv::Value* algoConfig = nullptr, const std::string* dumpFile = nullptr); /** * @brief Read an image file * @IMPORTANT: Only support PNG for now */ static Status readImage(const std::string& filename, int64_t& width, int64_t& height, int& channelCount, std::vector& data); static Status packImageRGBA(const std::vector& data, std::vector& rgba); static void unpackImageRGBA(const std::vector& rgba, std::vector& data); template static void convertIndexToRGBA(const std::vector& hostRGBA, std::vector& data, const int displayBit = -1); static uint32_t packRGBAColor(const uint32_t r, const uint32_t g, const uint32_t b, const uint32_t a); static uint32_t packRGB210Color(const uint32_t r, const uint32_t g, const uint32_t b, const uint32_t a); }; } // namespace Util } // namespace VideoStitch