Path: blob/master/modules/gapi/test/gapi_mock_kernels.hpp
16337 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3//4// Copyright (C) 2018 Intel Corporation567#include "opencv2/gapi/cpu/gcpukernel.hpp"89#include "api/gbackend_priv.hpp" // directly instantiate GBackend::Priv1011namespace opencv_test12{13namespace {14// FIXME: Currently every Kernel implementation in this test file has15// its own backend() method and it is incorrect! API classes should16// provide it out of the box.1718namespace I19{20G_TYPED_KERNEL(Foo, <cv::GMat(cv::GMat)>, "test.kernels.foo")21{22static cv::GMatDesc outMeta(const cv::GMatDesc &in) { return in; }23};2425G_TYPED_KERNEL(Bar, <cv::GMat(cv::GMat,cv::GMat)>, "test.kernels.bar")26{27static cv::GMatDesc outMeta(const cv::GMatDesc &in, const cv::GMatDesc &) { return in; }28};2930G_TYPED_KERNEL(Baz, <cv::GScalar(cv::GMat)>, "test.kernels.baz")31{32static cv::GScalarDesc outMeta(const cv::GMatDesc &) { return cv::empty_scalar_desc(); }33};3435G_TYPED_KERNEL(Qux, <cv::GMat(cv::GMat, cv::GScalar)>, "test.kernels.qux")36{37static cv::GMatDesc outMeta(const cv::GMatDesc &in, const cv::GScalarDesc &) { return in; }38};3940G_TYPED_KERNEL(Quux, <cv::GMat(cv::GScalar, cv::GMat)>, "test.kernels.quux")41{42static cv::GMatDesc outMeta(const cv::GScalarDesc &, const cv::GMatDesc& in) { return in; }43};44}4546// Kernel implementations for imaginary Jupiter device47namespace Jupiter48{49namespace detail50{51static cv::gapi::GBackend backend(std::make_shared<cv::gapi::GBackend::Priv>());52}5354inline cv::gapi::GBackend backend() { return detail::backend; }5556GAPI_OCV_KERNEL(Foo, I::Foo)57{58static void run(const cv::Mat &, cv::Mat &) { /*Do nothing*/ }59static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed60};61GAPI_OCV_KERNEL(Bar, I::Bar)62{63static void run(const cv::Mat &, const cv::Mat &, cv::Mat &) { /*Do nothing*/ }64static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed65};66GAPI_OCV_KERNEL(Baz, I::Baz)67{68static void run(const cv::Mat &, cv::Scalar &) { /*Do nothing*/ }69static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed70};71GAPI_OCV_KERNEL(Qux, I::Qux)72{73static void run(const cv::Mat &, const cv::Scalar&, cv::Mat &) { /*Do nothing*/ }74static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed75};7677GAPI_OCV_KERNEL(Quux, I::Quux)78{79static void run(const cv::Scalar&, const cv::Mat&, cv::Mat &) { /*Do nothing*/ }80static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed81};82} // namespace Jupiter8384// Kernel implementations for imaginary Saturn device85namespace Saturn86{87namespace detail88{89static cv::gapi::GBackend backend(std::make_shared<cv::gapi::GBackend::Priv>());90}9192inline cv::gapi::GBackend backend() { return detail::backend; }9394GAPI_OCV_KERNEL(Foo, I::Foo)95{96static void run(const cv::Mat &, cv::Mat &) { /*Do nothing*/ }97static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed98};99GAPI_OCV_KERNEL(Bar, I::Bar)100{101static void run(const cv::Mat &, const cv::Mat &, cv::Mat &) { /*Do nothing*/ }102static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed103};104GAPI_OCV_KERNEL(Baz, I::Baz)105{106static void run(const cv::Mat &, cv::Scalar &) { /*Do nothing*/ }107static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed108};109GAPI_OCV_KERNEL(Qux, I::Qux)110{111static void run(const cv::Mat &, const cv::Scalar&, cv::Mat &) { /*Do nothing*/ }112static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed113};114115GAPI_OCV_KERNEL(Quux, I::Quux)116{117static void run(const cv::Scalar&, const cv::Mat&, cv::Mat &) { /*Do nothing*/ }118static cv::gapi::GBackend backend() { return detail::backend; } // FIXME: Must be removed119};120} // namespace Saturn121} // anonymous namespace122} // namespace opencv_test123124125