// This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. #include "precomp.hpp" #include "backend.hpp" namespace cv { class StaticBackend: public IBackend { public: FN_createCaptureFile fn_createCaptureFile_; FN_createCaptureCamera fn_createCaptureCamera_; FN_createWriter fn_createWriter_; StaticBackend(FN_createCaptureFile fn_createCaptureFile, FN_createCaptureCamera fn_createCaptureCamera, FN_createWriter fn_createWriter) : fn_createCaptureFile_(fn_createCaptureFile), fn_createCaptureCamera_(fn_createCaptureCamera), fn_createWriter_(fn_createWriter) { // nothing } ~StaticBackend() CV_OVERRIDE {} Ptr createCapture(int camera) const CV_OVERRIDE { if (fn_createCaptureCamera_) return fn_createCaptureCamera_(camera); return Ptr(); } Ptr createCapture(const std::string &filename) const CV_OVERRIDE { if (fn_createCaptureFile_) return fn_createCaptureFile_(filename); return Ptr(); } Ptr createWriter(const std::string& filename, int fourcc, double fps, const cv::Size& sz, const VideoWriterParameters& params) const CV_OVERRIDE { if (fn_createWriter_) return fn_createWriter_(filename, fourcc, fps, sz, params); return Ptr(); } }; // StaticBackend class StaticBackendFactory : public IBackendFactory { protected: Ptr backend; public: StaticBackendFactory(FN_createCaptureFile createCaptureFile, FN_createCaptureCamera createCaptureCamera, FN_createWriter createWriter) : backend(makePtr(createCaptureFile, createCaptureCamera, createWriter)) { // nothing } ~StaticBackendFactory() CV_OVERRIDE {} Ptr getBackend() const CV_OVERRIDE { return backend.staticCast(); } }; Ptr createBackendFactory(FN_createCaptureFile createCaptureFile, FN_createCaptureCamera createCaptureCamera, FN_createWriter createWriter) { return makePtr(createCaptureFile, createCaptureCamera, createWriter).staticCast(); } } // namespace