opencv/modules/gapi/src/compiler/gobjref.hpp
Dmitry Matveev ca8bb8d053 G-API: Introduce streaming::desync and infer(ROI)
- desync() is a new (and for now, the only one) intrinsic
  which splits the graph execution into asynchronous parts
  when running in Streaming mode;
- desync() makes no effect when compiling in Traditional mode;
- Added tests on desync() working in various scenarios;
- Extended GStreamingExecutor to support desync(); also extended
  GStreamingCompiled() with a new version of pull() returning a
  vector of optional values;
- Fixed various issues with storing the type information & proper
  construction callbacks for GArray<> and GOpaque;

- Introduced a new infer(Roi,GMat) overload with a sample;

- Introduced an internal API for Islands to control fusion
  procedure (to fuse or not to fuse);
- Introduced handleStopStream() callback for island executables;
- Added GCompileArgs to metadata of the graph (required for other
  features).
2020-10-29 20:19:15 +03:00

59 lines
1.4 KiB
C++

// 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.
//
// Copyright (C) 2018 Intel Corporation
#ifndef OPENCV_GAPI_GOBJREF_HPP
#define OPENCV_GAPI_GOBJREF_HPP
#include "opencv2/gapi/util/variant.hpp"
#include "opencv2/gapi/garg.hpp"
namespace cv
{
namespace gimpl
{
// HostCtor was there, but then moved to public
// Redeclare here to avoid changing tons of code
using HostCtor = cv::detail::HostCtor;
using ConstVal = util::variant
< util::monostate
, cv::Scalar
, cv::detail::VectorRef
>;
struct RcDesc
{
int id; // id is unique but local to shape
GShape shape; // pair <id,shape> IS the unique ID
HostCtor ctor; // FIXME: is it really used here? Or in <Data>?
bool operator==(const RcDesc &rhs) const
{
// FIXME: ctor is not checked (should be?)
return id == rhs.id && shape == rhs.shape;
}
bool operator< (const RcDesc &rhs) const
{
return (id == rhs.id) ? shape < rhs.shape : id < rhs.id;
}
};
} // gimpl
namespace detail
{
template<> struct GTypeTraits<cv::gimpl::RcDesc>
{
static constexpr const ArgKind kind = ArgKind::GOBJREF;
};
}
} // cv
#endif // OPENCV_GAPI_GOBJREF_HPP