mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
Merge pull request #18127 from smirnov-alexey:as/gapi_serialization
[G-API]: Add GOpaque and GArray serialization support * Add GOpaque and GArray serialization support * Address review comments * Remove holds() method * Address review comments * Remove comments * Align streaming with kind changes * Fix kind in kernel * Address review comments
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
// 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
|
||||
// Copyright (C) 2018-2020 Intel Corporation
|
||||
|
||||
|
||||
#include "precomp.hpp"
|
||||
@@ -35,6 +35,11 @@ void cv::detail::GArrayU::setConstructFcn(ConstructVec &&cv)
|
||||
m_priv->ctor = std::move(cv);
|
||||
}
|
||||
|
||||
void cv::detail::GArrayU::setKind(cv::detail::OpaqueKind kind)
|
||||
{
|
||||
m_priv->kind = kind;
|
||||
}
|
||||
|
||||
namespace cv {
|
||||
std::ostream& operator<<(std::ostream& os, const cv::GArrayDesc &)
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// 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) 2019 Intel Corporation
|
||||
// Copyright (C) 2019-2020 Intel Corporation
|
||||
|
||||
|
||||
#include "precomp.hpp"
|
||||
@@ -35,6 +35,11 @@ void cv::detail::GOpaqueU::setConstructFcn(ConstructOpaque &&co)
|
||||
m_priv->ctor = std::move(co);
|
||||
}
|
||||
|
||||
void cv::detail::GOpaqueU::setKind(cv::detail::OpaqueKind kind)
|
||||
{
|
||||
m_priv->kind = kind;
|
||||
}
|
||||
|
||||
namespace cv {
|
||||
std::ostream& operator<<(std::ostream& os, const cv::GOpaqueDesc &)
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// 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
|
||||
// Copyright (C) 2018-2020 Intel Corporation
|
||||
|
||||
|
||||
#include "precomp.hpp"
|
||||
@@ -14,13 +14,14 @@
|
||||
cv::GOrigin::GOrigin(GShape s,
|
||||
const cv::GNode& n,
|
||||
std::size_t p,
|
||||
const cv::gimpl::HostCtor c)
|
||||
: shape(s), node(n), port(p), ctor(c)
|
||||
const cv::gimpl::HostCtor c,
|
||||
cv::detail::OpaqueKind k)
|
||||
: shape(s), node(n), port(p), ctor(c), kind(k)
|
||||
{
|
||||
}
|
||||
|
||||
cv::GOrigin::GOrigin(GShape s, cv::gimpl::ConstVal v)
|
||||
: shape(s), node(cv::GNode::Const()), value(v), port(INVALID_PORT)
|
||||
: shape(s), node(cv::GNode::Const()), value(v), port(INVALID_PORT), kind(cv::detail::OpaqueKind::CV_UNKNOWN)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
// 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
|
||||
|
||||
// Copyright (C) 2018-2020 Intel Corporation
|
||||
|
||||
#ifndef OPENCV_GAPI_GORIGIN_HPP
|
||||
#define OPENCV_GAPI_GORIGIN_HPP
|
||||
@@ -30,7 +29,8 @@ struct GOrigin
|
||||
GOrigin(GShape s,
|
||||
const GNode& n,
|
||||
std::size_t p = INVALID_PORT,
|
||||
const gimpl::HostCtor h = {});
|
||||
const gimpl::HostCtor h = {},
|
||||
cv::detail::OpaqueKind kind = cv::detail::OpaqueKind::CV_UNKNOWN);
|
||||
GOrigin(GShape s, gimpl::ConstVal value);
|
||||
|
||||
const GShape shape; // Shape of a produced object
|
||||
@@ -38,6 +38,7 @@ struct GOrigin
|
||||
const gimpl::ConstVal value; // Node can have initial constant value, now only scalar is supported
|
||||
const std::size_t port; // GNode's output number; FIXME: "= max_size" in C++14
|
||||
gimpl::HostCtor ctor; // FIXME: replace with an interface?
|
||||
detail::OpaqueKind kind; // primary is needed for GOpaque and GArray
|
||||
};
|
||||
|
||||
namespace detail
|
||||
|
||||
@@ -44,6 +44,8 @@ std::vector<char> cv::gapi::serialize(const cv::GRunArgs& ra)
|
||||
return os.data();
|
||||
}
|
||||
|
||||
// FIXME: This function should move from S11N to GRunArg-related entities.
|
||||
// it has nothing to do with the S11N as it is
|
||||
cv::GRunArgsP cv::gapi::bind(cv::GRunArgs &results)
|
||||
{
|
||||
cv::GRunArgsP outputs;
|
||||
@@ -77,3 +79,36 @@ cv::GRunArgsP cv::gapi::bind(cv::GRunArgs &results)
|
||||
}
|
||||
return outputs;
|
||||
}
|
||||
|
||||
// FIXME: move it out of s11n to api/
|
||||
// FIXME: don't we have such function already?
|
||||
cv::GRunArg cv::gapi::bind(cv::GRunArgP &out)
|
||||
{
|
||||
using T = cv::GRunArgP;
|
||||
switch (out.index())
|
||||
{
|
||||
#if !defined(GAPI_STANDALONE)
|
||||
case T::index_of<cv::UMat*>() :
|
||||
GAPI_Assert(false && "Please implement this!");
|
||||
break;
|
||||
#endif
|
||||
|
||||
case T::index_of<cv::detail::VectorRef>() :
|
||||
return cv::GRunArg(cv::util::get<cv::detail::VectorRef>(out));
|
||||
|
||||
case T::index_of<cv::detail::OpaqueRef>() :
|
||||
return cv::GRunArg(cv::util::get<cv::detail::OpaqueRef>(out));
|
||||
|
||||
case T::index_of<cv::Mat*>() :
|
||||
return cv::GRunArg(*cv::util::get<cv::Mat*>(out));
|
||||
|
||||
case T::index_of<cv::Scalar*>() :
|
||||
return cv::GRunArg(*cv::util::get<cv::Scalar*>(out));
|
||||
|
||||
default:
|
||||
// ...maybe our types were extended
|
||||
GAPI_Assert(false && "This value type is UNKNOWN!");
|
||||
break;
|
||||
}
|
||||
return cv::GRunArg();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user