Skip to content
Snippets Groups Projects
stereovideo.hpp 1.21 KiB
Newer Older
Nicolas Pope's avatar
Nicolas Pope committed
#pragma once
#ifndef _FTL_RGBD_STEREOVIDEO_HPP_
#define _FTL_RGBD_STEREOVIDEO_HPP_

#include <ftl/rgbd/source.hpp>
Sebastian Hahta's avatar
Sebastian Hahta committed
#include <ftl/operators/operator.hpp>
Nicolas Pope's avatar
Nicolas Pope committed
#include <string>

namespace ftl {

namespace rgbd {
namespace detail {

Nicolas Pope's avatar
Nicolas Pope committed
class LocalSource;
class Calibrate;
class Disparity;

/**
 * RGBD source from either a stereo video file with left + right images, or
Nicolas Pope's avatar
Nicolas Pope committed
 * direct from two camera devices. 
Nicolas Pope's avatar
Nicolas Pope committed
 */
class StereoVideoSource : public detail::Source {
Nicolas Pope's avatar
Nicolas Pope committed
	public:
	explicit StereoVideoSource(ftl::rgbd::Source*);
	StereoVideoSource(ftl::rgbd::Source*, const std::string &);
Nicolas Pope's avatar
Nicolas Pope committed
	~StereoVideoSource();

	void swap();
	bool capture(int64_t ts);
	bool retrieve();
	bool compute(int n, int b);
Nicolas Pope's avatar
Nicolas Pope committed
	bool isReady();
Nicolas Pope's avatar
Nicolas Pope committed
	Camera parameters(ftl::codecs::Channel chan) override;
Nicolas Pope's avatar
Nicolas Pope committed

	private:
	void updateParameters();

	LocalSource *lsrc_;
	Calibrate *calib_;
Nicolas Pope's avatar
Nicolas Pope committed
	cv::Size color_size_;
	cv::Size depth_size_;

	ftl::operators::Graph *pipeline_input_;
	ftl::operators::Graph *pipeline_depth_;
Nicolas Pope's avatar
Nicolas Pope committed
	cv::cuda::GpuMat fullres_left_;
	cv::cuda::GpuMat fullres_right_;

Nicolas Pope's avatar
Nicolas Pope committed
	bool ready_;
	
	cv::cuda::Stream stream_;
	cv::cuda::Stream stream2_;
	std::vector<Frame> frames_;

	cv::Mat mask_l_;
Nicolas Pope's avatar
Nicolas Pope committed

	void init(const std::string &);
Nicolas Pope's avatar
Nicolas Pope committed
};

Nicolas Pope's avatar
Nicolas Pope committed
}
}

#endif  // _FTL_RGBD_STEREOVIDEO_HPP_