G-API: Introduce streaming::desync and infer(ROI)
authorDmitry Matveev <dmitry.matveev@intel.com>
Tue, 17 Mar 2020 23:38:24 +0000 (02:38 +0300)
committerDmitry Matveev <dmitry.matveev@intel.com>
Thu, 29 Oct 2020 17:19:15 +0000 (20:19 +0300)
commitca8bb8d0532c3070075db66947b58e8894650fdc
tree0241c36104471675b5d96c04eb895d94c98bb261
parentf345ed564a06178670750bad59526cfa4033be55
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).
40 files changed:
modules/gapi/CMakeLists.txt
modules/gapi/include/opencv2/gapi.hpp
modules/gapi/include/opencv2/gapi/garray.hpp
modules/gapi/include/opencv2/gapi/gkernel.hpp
modules/gapi/include/opencv2/gapi/gopaque.hpp
modules/gapi/include/opencv2/gapi/gstreaming.hpp
modules/gapi/include/opencv2/gapi/gtype_traits.hpp
modules/gapi/include/opencv2/gapi/infer.hpp
modules/gapi/include/opencv2/gapi/streaming/desync.hpp [new file with mode: 0644]
modules/gapi/samples/infer_single_roi.cpp [new file with mode: 0644]
modules/gapi/src/api/gbackend.cpp
modules/gapi/src/api/gbackend_priv.hpp
modules/gapi/src/api/ginfer.cpp
modules/gapi/src/api/kernels_streaming.cpp [new file with mode: 0644]
modules/gapi/src/backends/ie/giebackend.cpp
modules/gapi/src/backends/ocl/goclbackend.cpp
modules/gapi/src/compiler/gcompiler.cpp
modules/gapi/src/compiler/gislandmodel.cpp
modules/gapi/src/compiler/gislandmodel.hpp
modules/gapi/src/compiler/gmodel.cpp
modules/gapi/src/compiler/gmodel.hpp
modules/gapi/src/compiler/gmodelbuilder.cpp
modules/gapi/src/compiler/gobjref.hpp
modules/gapi/src/compiler/gstreaming.cpp
modules/gapi/src/compiler/gstreaming_priv.hpp
modules/gapi/src/compiler/passes/exec.cpp
modules/gapi/src/compiler/passes/intrin.cpp [new file with mode: 0644]
modules/gapi/src/compiler/passes/kernels.cpp
modules/gapi/src/compiler/passes/passes.hpp
modules/gapi/src/compiler/transactions.hpp
modules/gapi/src/executor/conc_queue.hpp
modules/gapi/src/executor/gstreamingexecutor.cpp
modules/gapi/src/executor/gstreamingexecutor.hpp
modules/gapi/src/executor/last_value.hpp [new file with mode: 0644]
modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp
modules/gapi/test/internal/gapi_int_island_fusion_tests.cpp
modules/gapi/test/internal/gapi_transactions_test.cpp
modules/gapi/test/own/conc_queue_tests.cpp
modules/gapi/test/own/last_written_value_tests.cpp [new file with mode: 0644]
modules/gapi/test/streaming/gapi_streaming_tests.cpp