// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "gpu/buffer.hpp" #include "gpu/hostBuffer.hpp" #include "gpu/stream.hpp" namespace VideoStitch { namespace Core { class InputDefinition; class PanoDefinition; class PanoSurface; class SourceSurface; } // namespace Core namespace GPU { class Surface; Status splatInputWithDepthIntoPano(const Core::PanoDefinition& panoDef, Core::PanoSurface& pano, const GPU::Surface& depthSurface, const std::map<videoreaderid_t, Core::SourceSurface*>& surfaces, GPU::Stream stream); Status sphereSweepInput(videoreaderid_t sourceID, int frame, GPU::Surface& dst, const std::map<videoreaderid_t, Core::SourceSurface*>& surfaces, const Core::PanoDefinition& panoDef, GPU::Stream& stream, const float scale = 1.0f); // Implementation for command line tool // Sweeps into input-sized surface and regularizes through SGM Status sphereSweepInputSGM(videoreaderid_t sourceID, int frame, GPU::Surface& dst, GPU::HostBuffer<unsigned short>& hostCostVolume, const std::map<videoreaderid_t, Core::SourceSurface*>& surfaces, const Core::PanoDefinition& panoDef, GPU::Stream& stream, const float scale = 1.0f); // Implementation for command line tool // Converts SGM disparity to depth values in dst Status sphereSweepInputDisparityToDepth(videoreaderid_t sourceID, int frame, GPU::Surface& dst, GPU::HostBuffer<short>& hostDisparity, bool useHostDisparity, const std::map<videoreaderid_t, Core::SourceSurface*>& surfaces, const Core::PanoDefinition& panoDef, GPU::Stream& stream, const float scale = 1.0f); Status sphereSweepInputStep(videoreaderid_t sourceID, int frame, GPU::Surface& dstDepth, GPU::Surface& lowerLevelDepth, const std::map<videoreaderid_t, Core::SourceSurface*>& surfaces, const Core::PanoDefinition& panoDef, GPU::Stream& stream, const float scale = 1.0f); // returns the number of sphereSweeps() (for cost allocation reasons) int numSphereSweeps(); // returns the maximum number of inputs for depth estimation int maxDepthInputs(); } // namespace GPU } // namespace VideoStitch