// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "core/inputControllerImpl.hpp" #include "libvideostitch/depthController.hpp" #ifdef _MSC_VER #pragma warning(push) // using virtual inheritance of InputController on purpose #pragma warning(disable : 4250) #endif namespace VideoStitch { namespace Core { class InputPipeline; class DepthControllerImpl : public InputControllerImpl, public DepthController { public: static Potential create(const PanoDefinition& pano, const DepthDefinition& depthDef, const AudioPipeDefinition& audioPipeDef, Input::ReaderFactory* readerFactory); virtual ~DepthControllerImpl(); virtual ControllerStatus estimateDepth(std::vector extracts) final override; virtual Potential createAsyncExtractOutput(int sourceID, std::shared_ptr surf, std::shared_ptr writer) final override; private: DepthControllerImpl(const PanoDefinition& pano, ReaderController* readerController, InputPipeline* videoPipe); std::unique_ptr pano; InputPipeline* pipe; }; } // namespace Core } // namespace VideoStitch #ifdef _MSC_VER #pragma warning(pop) #endif