// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm
#pragma once
#include "libvideostitch/config.hpp"
#include "libvideostitch/status.hpp"
#include "libvideostitch/ptv.hpp"
namespace VideoStitch {
namespace Util {
class VS_EXPORT Compression {
public:
// https ://developers.google.com/maps/documentation/utilities/polylinealgorithm
// https://gist.github.com/shinyzhu/4617989
static Status polylineEncodeBinaryMask(const int width, const int height, const std::vector<unsigned char>& data,
std::string& values);
static Status polylineDecodeBinaryMask(const int width, const int height, const std::string& values,
std::vector<unsigned char>& data, const bool toBinary = true);
static Status polylineEncodeBinaryMask(const int width, const int height, const std::string& data,
std::string& values);
static Status polylineDecodeBinaryMask(const int width, const int height, const std::string& values,
std::string& data);
static float binaryDifference(const std::vector<unsigned char>& im0, const std::vector<unsigned char>& im1);
// Convert mask <--> encoded masks
static Status convertMaskToEncodedMasks(const int width, const int height, const uint32_t* const fullData,
std::vector<std::string>& datas);
static Status convertEncodedMasksToMask(const int width, const int height, const std::vector<std::string>& datas,
std::vector<uint32_t>& fullData);
};
} // namespace Util
} // namespace VideoStitch
-
stitchEm authoredf1d60797