mirror of
https://github.com/opencv/opencv.git
synced 2025-01-21 00:20:59 +08:00
5e3a7ac8a7
G-API-NG/Streaming: don't require explicit metadata in compileStreaming() * First probably working version Hardcode gose to setSource() :) * Pre final version of move metadata declaration from compileStreaming() to setSource(). * G-API-NG/Streaming: recovered the existing Streaming functionality - The auto-meta test is disabling since it crashes. - Restored .gitignore * G-API-NG/Streaming: Made the meta-less compileStreaming() work - Works fine even with OpenCV backend; - Fluid doesn't support such kind of compilation so far - to be fixed * G-API-NG/Streaming: Fix Fluid to support meta-less compilation - Introduced a notion of metadata-sensitive passes and slightly refactored GCompiler and GFluidBackend to support that - Fixed a TwoVideoSourcesFail test on streaming * Add three smoke streaming tests to gapi_streaming_tests. All three teste run pipeline with two different input sets 1) SmokeTest_Two_Const_Mats test run pipeline with two const Mats 2) SmokeTest_One_Video_One_Const_Scalar test run pipleline with Mat(video source) and const Scalar 3) SmokeTest_One_Video_One_Const_Vector test run pipeline with Mat(video source) and const Vector # Please enter the commit message for your changes. Lines starting * style fix * Some review stuff * Some review stuff
66 lines
2.1 KiB
C++
66 lines
2.1 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_GCOMPILER_HPP
|
|
#define OPENCV_GAPI_GCOMPILER_HPP
|
|
|
|
|
|
#include <opencv2/gapi/gcommon.hpp>
|
|
#include <opencv2/gapi/gkernel.hpp>
|
|
#include <opencv2/gapi/infer.hpp>
|
|
#include <opencv2/gapi/gcomputation.hpp>
|
|
|
|
#include <ade/execution_engine/execution_engine.hpp>
|
|
|
|
namespace cv { namespace gimpl {
|
|
|
|
// FIXME: exported for internal tests only!
|
|
class GAPI_EXPORTS GCompiler
|
|
{
|
|
const GComputation& m_c;
|
|
const GMetaArgs m_metas;
|
|
GCompileArgs m_args;
|
|
ade::ExecutionEngine m_e;
|
|
|
|
cv::gapi::GKernelPackage m_all_kernels;
|
|
cv::gapi::GNetPackage m_all_networks;
|
|
|
|
// Patters built from transformations
|
|
std::vector<std::unique_ptr<ade::Graph>> m_all_patterns;
|
|
|
|
|
|
void validateInputMeta();
|
|
void validateOutProtoArgs();
|
|
|
|
public:
|
|
// Metas may be empty in case when graph compiling for streaming
|
|
// In this case graph get metas from first frame
|
|
explicit GCompiler(const GComputation &c,
|
|
GMetaArgs &&metas,
|
|
GCompileArgs &&args);
|
|
|
|
// The method which does everything...
|
|
GCompiled compile();
|
|
|
|
// This too.
|
|
GStreamingCompiled compileStreaming();
|
|
|
|
// But those are actually composed of this:
|
|
using GPtr = std::unique_ptr<ade::Graph>;
|
|
GPtr generateGraph(); // Unroll GComputation into a GModel
|
|
void runPasses(ade::Graph &g); // Apply all G-API passes on a GModel
|
|
void compileIslands(ade::Graph &g); // Instantiate GIslandExecutables in GIslandModel
|
|
static void compileIslands(ade::Graph &g, const cv::GCompileArgs &args);
|
|
GCompiled produceCompiled(GPtr &&pg); // Produce GCompiled from processed GModel
|
|
GStreamingCompiled produceStreamingCompiled(GPtr &&pg); // Produce GStreamingCompiled from processed GMbodel
|
|
static void runMetaPasses(ade::Graph &g, const cv::GMetaArgs &metas);
|
|
};
|
|
|
|
}}
|
|
|
|
#endif // OPENCV_GAPI_GCOMPILER_HPP
|