1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm
#include "./imageWarper.hpp"
#include "./linearFlowWarper.hpp"
#include "./noWarper.hpp"
namespace VideoStitch {
namespace Core {
Potential<ImageWarper> ImageWarper::factor(const ImageWarperAlgorithm e, std::shared_ptr<MergerPair> mergerPair,
std::map<std::string, float> parameters, GPU::Stream gpuStream) {
std::unique_ptr<ImageWarper> warperPtr;
switch (e) {
#ifndef VS_OPENCL
case ImageWarperAlgorithm::LinearFlowWarper: {
warperPtr.reset(new LinearFlowWarper(parameters));
} break;
#endif
case ImageWarperAlgorithm::NoWarper:
warperPtr.reset(new NoWarper(parameters));
break;
default:
warperPtr.reset(new NoWarper(parameters));
break;
}
FAIL_RETURN(warperPtr->init(mergerPair));
FAIL_RETURN(warperPtr->setupCommon(gpuStream));
return Potential<ImageWarper>(warperPtr.release());
}
ImageWarper::ImageWarperAlgorithm ImageWarper::getDefaultImageWarper() { return ImageWarperAlgorithm::NoWarper; }
ImageWarper::ImageWarper(const std::map<std::string, float>& parameters_)
: parameters(parameters_), mergerPair(nullptr) {}
ImageWarper::~ImageWarper() {}
Status ImageWarper::init(std::shared_ptr<MergerPair>& inMergerPair) {
this->mergerPair = inMergerPair;
return Status::OK();
}
Status ImageWarper::warp(GPU::Buffer<uint32_t> warpedBuffer, const GPU::Buffer<const uint32_t> inputBuffer, const Rect&,
const GPU::Buffer<const float2> flow, const int, const int, GPU::Buffer<float4> debug,
GPU::Buffer<uint32_t> flowWarpedBuffer, GPU::Stream gpuStream) {
return Status::OK();
}
Status ImageWarper::setupCommon(GPU::Stream gpuStream) { return Status::OK(); }
} // namespace Core
} // namespace VideoStitch