2018-10-31 20:53:01 +08:00
|
|
|
# FIXME: Rework standalone build in more generic maner
|
|
|
|
# (Restructure directories, add common pass, etc)
|
2019-12-06 21:36:42 +08:00
|
|
|
if(NOT DEFINED OPENCV_INITIAL_PASS)
|
2019-03-01 16:28:49 +08:00
|
|
|
cmake_minimum_required(VERSION 3.3)
|
2019-09-09 21:23:04 +08:00
|
|
|
project(gapi_standalone)
|
2018-10-31 20:53:01 +08:00
|
|
|
include("cmake/standalone.cmake")
|
|
|
|
return()
|
|
|
|
endif()
|
|
|
|
|
2019-12-06 21:36:42 +08:00
|
|
|
if(NOT TARGET ade)
|
2018-09-27 02:50:39 +08:00
|
|
|
# can't build G-API because of the above reasons
|
|
|
|
ocv_module_disable(gapi)
|
|
|
|
return()
|
|
|
|
endif()
|
|
|
|
|
2022-01-15 05:53:19 +08:00
|
|
|
if(TARGET ocv.3rdparty.openvino)
|
|
|
|
# TODO: remove OPENCV_GAPI_INF_ENGINE option
|
|
|
|
set(initial_value ON)
|
|
|
|
if(DEFINED OPENCV_GAPI_INF_ENGINE)
|
|
|
|
set(initial_value ${OPENCV_GAPI_INF_ENGINE})
|
|
|
|
message(WARNING "OPENCV_GAPI_INF_ENGINE option is deprecated. Use OPENCV_GAPI_WITH_OPENVINO option instead.")
|
|
|
|
endif()
|
|
|
|
ocv_option(OPENCV_GAPI_WITH_OPENVINO "G-API: Enable OpenVINO Toolkit support" ${initial_value})
|
2020-04-23 05:41:36 +08:00
|
|
|
endif()
|
|
|
|
|
2018-09-27 02:50:39 +08:00
|
|
|
set(the_description "OpenCV G-API Core Module")
|
2019-08-05 22:56:34 +08:00
|
|
|
|
2020-04-08 22:05:43 +08:00
|
|
|
ocv_add_module(gapi
|
|
|
|
REQUIRED
|
|
|
|
opencv_imgproc
|
|
|
|
OPTIONAL
|
2021-04-01 01:09:10 +08:00
|
|
|
opencv_video opencv_calib3d
|
2020-07-29 21:18:52 +08:00
|
|
|
WRAP
|
|
|
|
python
|
2020-04-08 22:05:43 +08:00
|
|
|
)
|
2018-09-27 02:50:39 +08:00
|
|
|
|
2019-10-29 02:53:14 +08:00
|
|
|
if(MSVC)
|
2021-10-29 02:19:46 +08:00
|
|
|
if(MSVC_VERSION LESS 1910)
|
|
|
|
# Disable obsolete warning C4503 popping up on MSVC << 15 2017
|
|
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503?view=vs-2019
|
|
|
|
# and IE deprecated code warning C4996
|
|
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4503 /wd4996)
|
2020-07-17 02:33:35 +08:00
|
|
|
endif()
|
2019-10-29 02:53:14 +08:00
|
|
|
endif()
|
Merge pull request #15216 from dmatveev:dm/ng-0010-g-api-streaming-api
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
2019-10-19 00:29:58 +08:00
|
|
|
|
2018-09-27 02:50:39 +08:00
|
|
|
file(GLOB gapi_ext_hdrs
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp"
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp"
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h"
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/cpu/*.hpp"
|
2019-11-07 19:03:46 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/fluid/*.hpp"
|
2018-11-09 03:14:53 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/gpu/*.hpp"
|
2019-11-07 19:03:46 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/infer/*.hpp"
|
2022-01-18 06:56:01 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/oak/*.hpp"
|
2018-11-29 21:29:11 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/ocl/*.hpp"
|
2018-09-27 02:50:39 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/own/*.hpp"
|
2021-12-07 00:54:21 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/plaidml/*.hpp"
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/python/*.hpp"
|
2019-11-07 19:03:46 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/render/*.hpp"
|
2020-10-08 05:48:49 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/s11n/*.hpp"
|
Merge pull request #15216 from dmatveev:dm/ng-0010-g-api-streaming-api
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
2019-10-19 00:29:58 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/*.hpp"
|
2021-12-07 00:54:21 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/gstreamer/*.hpp"
|
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/onevpl/*.hpp"
|
2022-01-26 22:01:13 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/plaidml/*.hpp"
|
2019-11-07 19:03:46 +08:00
|
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/util/*.hpp"
|
2018-09-27 02:50:39 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
set(gapi_srcs
|
|
|
|
# Front-end part
|
2020-11-17 22:04:19 +08:00
|
|
|
src/api/grunarg.cpp
|
2019-04-18 02:54:47 +08:00
|
|
|
src/api/gorigin.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/api/gmat.cpp
|
|
|
|
src/api/garray.cpp
|
2020-01-31 02:08:11 +08:00
|
|
|
src/api/gopaque.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/api/gscalar.cpp
|
2020-09-24 02:25:14 +08:00
|
|
|
src/api/gframe.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/api/gkernel.cpp
|
|
|
|
src/api/gbackend.cpp
|
|
|
|
src/api/gproto.cpp
|
|
|
|
src/api/gnode.cpp
|
|
|
|
src/api/gcall.cpp
|
|
|
|
src/api/gcomputation.cpp
|
|
|
|
src/api/operators.cpp
|
|
|
|
src/api/kernels_core.cpp
|
|
|
|
src/api/kernels_imgproc.cpp
|
2020-04-08 22:05:43 +08:00
|
|
|
src/api/kernels_video.cpp
|
2020-09-18 21:31:16 +08:00
|
|
|
src/api/kernels_nnparsers.cpp
|
2020-03-18 07:38:24 +08:00
|
|
|
src/api/kernels_streaming.cpp
|
2021-04-01 01:09:10 +08:00
|
|
|
src/api/kernels_stereo.cpp
|
2019-06-14 23:29:50 +08:00
|
|
|
src/api/render.cpp
|
2019-09-10 17:23:16 +08:00
|
|
|
src/api/render_ocv.cpp
|
2019-08-05 22:56:34 +08:00
|
|
|
src/api/ginfer.cpp
|
2020-09-30 03:19:54 +08:00
|
|
|
src/api/media.cpp
|
2020-10-05 02:57:41 +08:00
|
|
|
src/api/rmat.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
|
|
|
|
# Compiler part
|
|
|
|
src/compiler/gmodel.cpp
|
|
|
|
src/compiler/gmodelbuilder.cpp
|
|
|
|
src/compiler/gislandmodel.cpp
|
|
|
|
src/compiler/gcompiler.cpp
|
|
|
|
src/compiler/gcompiled.cpp
|
Merge pull request #15216 from dmatveev:dm/ng-0010-g-api-streaming-api
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
2019-10-19 00:29:58 +08:00
|
|
|
src/compiler/gstreaming.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/compiler/passes/helpers.cpp
|
|
|
|
src/compiler/passes/dump_dot.cpp
|
|
|
|
src/compiler/passes/islands.cpp
|
|
|
|
src/compiler/passes/meta.cpp
|
|
|
|
src/compiler/passes/kernels.cpp
|
|
|
|
src/compiler/passes/exec.cpp
|
2019-09-25 23:19:45 +08:00
|
|
|
src/compiler/passes/transformations.cpp
|
2019-08-09 23:57:56 +08:00
|
|
|
src/compiler/passes/pattern_matching.cpp
|
2019-09-25 23:19:45 +08:00
|
|
|
src/compiler/passes/perform_substitution.cpp
|
Merge pull request #15216 from dmatveev:dm/ng-0010-g-api-streaming-api
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
2019-10-19 00:29:58 +08:00
|
|
|
src/compiler/passes/streaming.cpp
|
2020-03-18 07:38:24 +08:00
|
|
|
src/compiler/passes/intrin.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
|
|
|
|
# Executor
|
2022-08-31 03:48:29 +08:00
|
|
|
src/executor/gabstractexecutor.cpp
|
2022-08-31 04:50:34 +08:00
|
|
|
src/executor/gabstractstreamingexecutor.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/executor/gexecutor.cpp
|
2020-11-30 21:15:13 +08:00
|
|
|
src/executor/gtbbexecutor.cpp
|
Merge pull request #15216 from dmatveev:dm/ng-0010-g-api-streaming-api
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
2019-10-19 00:29:58 +08:00
|
|
|
src/executor/gstreamingexecutor.cpp
|
2019-04-30 18:11:56 +08:00
|
|
|
src/executor/gasync.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
|
|
|
|
# CPU Backend (currently built-in)
|
|
|
|
src/backends/cpu/gcpubackend.cpp
|
|
|
|
src/backends/cpu/gcpukernel.cpp
|
|
|
|
src/backends/cpu/gcpuimgproc.cpp
|
2021-04-01 01:09:10 +08:00
|
|
|
src/backends/cpu/gcpustereo.cpp
|
2020-04-08 22:05:43 +08:00
|
|
|
src/backends/cpu/gcpuvideo.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/backends/cpu/gcpucore.cpp
|
2020-09-18 21:31:16 +08:00
|
|
|
src/backends/cpu/gnnparsers.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
|
|
|
|
# Fluid Backend (also built-in, FIXME:move away)
|
|
|
|
src/backends/fluid/gfluidbuffer.cpp
|
|
|
|
src/backends/fluid/gfluidbackend.cpp
|
|
|
|
src/backends/fluid/gfluidimgproc.cpp
|
2018-11-13 22:48:10 +08:00
|
|
|
src/backends/fluid/gfluidimgproc_func.dispatch.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/backends/fluid/gfluidcore.cpp
|
2022-05-12 16:42:38 +08:00
|
|
|
src/backends/fluid/gfluidcore_func.dispatch.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
|
2022-01-18 06:56:01 +08:00
|
|
|
# OAK Backend (optional)
|
|
|
|
src/backends/oak/goak.cpp
|
|
|
|
src/backends/oak/goakbackend.cpp
|
2022-04-06 02:00:32 +08:00
|
|
|
src/backends/oak/goak_memory_adapters.cpp
|
2022-01-18 06:56:01 +08:00
|
|
|
|
2018-11-29 21:29:11 +08:00
|
|
|
# OCL Backend (currently built-in)
|
|
|
|
src/backends/ocl/goclbackend.cpp
|
|
|
|
src/backends/ocl/goclkernel.cpp
|
|
|
|
src/backends/ocl/goclimgproc.cpp
|
|
|
|
src/backends/ocl/goclcore.cpp
|
2018-11-09 03:14:53 +08:00
|
|
|
|
2019-08-05 22:56:34 +08:00
|
|
|
# IE Backend. FIXME: should be included by CMake
|
|
|
|
# if and only if IE support is enabled
|
|
|
|
src/backends/ie/giebackend.cpp
|
2020-07-17 02:33:35 +08:00
|
|
|
src/backends/ie/giebackend/giewrapper.cpp
|
2019-08-05 22:56:34 +08:00
|
|
|
|
2020-11-17 22:04:19 +08:00
|
|
|
# ONNX backend
|
2020-11-04 02:39:16 +08:00
|
|
|
src/backends/onnx/gonnxbackend.cpp
|
|
|
|
|
2020-11-17 22:04:19 +08:00
|
|
|
# Render backend
|
2019-10-18 02:04:03 +08:00
|
|
|
src/backends/render/grenderocv.cpp
|
2020-10-27 03:55:43 +08:00
|
|
|
src/backends/render/ft_render.cpp
|
2019-10-18 02:04:03 +08:00
|
|
|
|
2020-11-17 22:04:19 +08:00
|
|
|
# PlaidML Backend
|
2019-11-27 23:21:00 +08:00
|
|
|
src/backends/plaidml/gplaidmlcore.cpp
|
|
|
|
src/backends/plaidml/gplaidmlbackend.cpp
|
|
|
|
|
2020-11-17 22:04:19 +08:00
|
|
|
# Common backend code
|
|
|
|
src/backends/common/gmetabackend.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
src/backends/common/gcompoundbackend.cpp
|
|
|
|
src/backends/common/gcompoundkernel.cpp
|
Merge pull request #17020 from dbudniko:dbudniko/serialization_backend
G-API Serialization routines
* Serialization backend in tests, initial version
* S11N/00: A Great Rename
- "Serialization" is too long and too error-prone to type,
so now it is renamed to "s11n" everywhere;
- Same applies to "SRLZ";
- Tests also renamed to start with 'S11N.*' (easier to run);
- Also updated copyright years in new files to 2020.
* S11N/01: Some basic interface segregation
- Moved some details (low-level functions) out of serialization.hpp;
- Introduced I::IStream and I::OStream interfaces;
- Implemented those via the existing [De]SerializationStream classes;
- Moved all operators to use interfaces instead of classes;
- Moved the htonl/ntohl handling out of operators (to the classes).
The implementation didn't change much, it is a subject to the further
refactoring
* S11N/02: Basic operator reorg, basic tests, vector support
- Reorganized operators on atomic types to follow >>/<< model
(put them closer in the code for the respective types);
- Introduce more operators for basic (scalar) types;
- Drop all vector s11n overloads -- replace with a generic
(template-based) one;
- Introduced a new test suite where low-level s11n functionality
is tested (for the basic types).
* S11N/03: Operators reorganization
- Sorted the Opaque types enum by complexity;
- Reorganized the existing operators for basic types, also ordered by
complexity;
- Organized operators in three groups (Basics, OpenCV, G-API);
- Added a generic serialization for variant<>;
- Reimplemented some of the existing operators (for OpenCV and G-API
data structures);
- Introduced new operators for cv::gimpl data types. These operators
(and so, the data structures) are not yet used in the graph
dump/reconstruction routine, it will be done as a next step.
* S11N/04: The Great Clean-up
- Drop the duplicates of GModel data structures from the
serialization, serialize the GModel data structures themselve
instead (hand-written code replaced with operators).
- Also removed usuned code for printing, etc.
* S11N/05: Internal API Clean-up
- Minimize the serialization API to just Streams and Operators;
- Refactor and fix the graph serialization (deconstruction and
reconstruction) routines, fix data addressing problems there;
- Move the serialization.[ch]pp files to the core G-API library
* S11N/06: Top-level API introduction
- !!!This is likely the most invasive commit in the series!!!
- Introduced a top-level API to serialize and deserialize a GComputation
- Extended the compiler to support both forms of a GComputation:
an expession based and a deserialized one. This has led to changes in
the cv::GComputation::Priv and in its dependent components (even the
transformation tests);
- Had to extend the kernel API (GKernel) with extra information on
operations (mainly `outMeta`) which was only available for expression
based graphs. Now the `outMeta` can be taken from kernels too (and for
the deserialized graphs it is the only way);
- Revisited the internal serialization API, had to expose previously
hidden entities (like `GSerialized`);
- Extended the serialized graph info with new details (object counter,
protocol). Added unordered_map generic serialization for that;
- Reworked the very first pipeline test to be "proper"; GREEN now, the rest
is to be reworked in the next iteration.
* S11N/07: Tests reworked
- Moved the sample pipeline tests w/serialization to
test the public API (`cv::gapi::serialize`, then
followed by `cv::gapi::deserialize<>`). All GREEN.
- As a consequence, dropped the "Serialization" test
backend as no longer necessary.
* S11N/08: Final touches
- Exposed the C++ native data types at Streams level;
- Switched the ByteMemoryIn/OutStreams to store data in `char`
internally (2x less memory for sample pipelines);
- Fixed and refactored Mat dumping to the stream;
- Renamed S11N pipeline tests to their new meaning.
* linux build fix
* fix RcDesc and int uint warnings
* more Linux build fix
* white space and virtual android error fix (attempt)
* more warnings to be fixed
* android warnings fix attempt
* one more attempt for android build fix
* android warnings one more fix
* return back override
* avoid size_t
* static deserialize
* and how do you like this, elon? anonymous namespace to fix android warning.
* static inline
* trying to fix standalone build
* mat dims fix
* fix mat r/w for standalone
Co-authored-by: Dmitry Matveev <dmitry.matveev@intel.com>
2020-06-27 03:41:29 +08:00
|
|
|
|
|
|
|
# Serialization API and routines
|
|
|
|
src/api/s11n.cpp
|
|
|
|
src/backends/common/serialization.cpp
|
2020-10-27 03:02:03 +08:00
|
|
|
|
2020-12-12 00:29:34 +08:00
|
|
|
# Streaming backend
|
|
|
|
src/backends/streaming/gstreamingbackend.cpp
|
|
|
|
|
2020-10-27 03:02:03 +08:00
|
|
|
# Python bridge
|
|
|
|
src/backends/ie/bindings_ie.cpp
|
2022-05-20 19:49:15 +08:00
|
|
|
src/backends/onnx/bindings_onnx.cpp
|
2021-03-26 19:16:26 +08:00
|
|
|
src/backends/python/gpythonbackend.cpp
|
2021-04-13 03:20:59 +08:00
|
|
|
|
2021-12-07 00:54:21 +08:00
|
|
|
# OpenVPL Streaming source
|
2021-08-24 20:41:57 +08:00
|
|
|
src/streaming/onevpl/source.cpp
|
|
|
|
src/streaming/onevpl/source_priv.cpp
|
|
|
|
src/streaming/onevpl/file_data_provider.cpp
|
|
|
|
src/streaming/onevpl/cfg_params.cpp
|
2021-10-19 00:20:55 +08:00
|
|
|
src/streaming/onevpl/cfg_params_parser.cpp
|
|
|
|
src/streaming/onevpl/utils.cpp
|
2022-09-23 19:08:29 +08:00
|
|
|
src/streaming/onevpl/default.cpp
|
2021-08-24 20:41:57 +08:00
|
|
|
src/streaming/onevpl/data_provider_interface_exception.cpp
|
2022-02-24 18:35:52 +08:00
|
|
|
src/streaming/onevpl/accelerators/surface/base_frame_adapter.cpp
|
2021-09-20 21:28:32 +08:00
|
|
|
src/streaming/onevpl/accelerators/surface/cpu_frame_adapter.cpp
|
2021-12-08 15:09:33 +08:00
|
|
|
src/streaming/onevpl/accelerators/surface/dx11_frame_adapter.cpp
|
2021-09-20 21:28:32 +08:00
|
|
|
src/streaming/onevpl/accelerators/surface/surface.cpp
|
2021-09-23 19:34:30 +08:00
|
|
|
src/streaming/onevpl/accelerators/surface/surface_pool.cpp
|
2021-12-08 15:09:33 +08:00
|
|
|
src/streaming/onevpl/accelerators/utils/shared_lock.cpp
|
2021-09-23 19:34:30 +08:00
|
|
|
src/streaming/onevpl/accelerators/accel_policy_cpu.cpp
|
|
|
|
src/streaming/onevpl/accelerators/accel_policy_dx11.cpp
|
2022-05-12 16:42:38 +08:00
|
|
|
src/streaming/onevpl/accelerators/accel_policy_va_api.cpp
|
2021-12-08 15:09:33 +08:00
|
|
|
src/streaming/onevpl/accelerators/dx11_alloc_resource.cpp
|
2021-09-28 23:02:21 +08:00
|
|
|
src/streaming/onevpl/engine/engine_session.cpp
|
|
|
|
src/streaming/onevpl/engine/processing_engine_base.cpp
|
|
|
|
src/streaming/onevpl/engine/decode/decode_engine_legacy.cpp
|
|
|
|
src/streaming/onevpl/engine/decode/decode_session.cpp
|
2022-01-24 22:05:26 +08:00
|
|
|
src/streaming/onevpl/engine/transcode/transcode_engine_legacy.cpp
|
|
|
|
src/streaming/onevpl/engine/transcode/transcode_session.cpp
|
2022-02-24 18:35:52 +08:00
|
|
|
src/streaming/onevpl/engine/preproc/preproc_engine.cpp
|
|
|
|
src/streaming/onevpl/engine/preproc/preproc_session.cpp
|
2022-03-15 16:01:03 +08:00
|
|
|
src/streaming/onevpl/engine/preproc/preproc_dispatcher.cpp
|
2022-04-01 18:06:47 +08:00
|
|
|
src/streaming/onevpl/engine/preproc_engine_interface.cpp
|
2021-11-22 19:53:38 +08:00
|
|
|
src/streaming/onevpl/demux/async_mfp_demux_data_provider.cpp
|
|
|
|
src/streaming/onevpl/data_provider_dispatcher.cpp
|
2021-08-18 01:11:22 +08:00
|
|
|
|
2021-10-20 17:43:32 +08:00
|
|
|
src/streaming/onevpl/cfg_param_device_selector.cpp
|
|
|
|
src/streaming/onevpl/device_selector_interface.cpp
|
|
|
|
|
2021-12-07 00:54:21 +08:00
|
|
|
# GStreamer Streaming source
|
|
|
|
src/streaming/gstreamer/gstreamer_pipeline_facade.cpp
|
|
|
|
src/streaming/gstreamer/gstreamerpipeline.cpp
|
|
|
|
src/streaming/gstreamer/gstreamersource.cpp
|
|
|
|
src/streaming/gstreamer/gstreamer_buffer_utils.cpp
|
|
|
|
src/streaming/gstreamer/gstreamer_media_adapter.cpp
|
|
|
|
src/streaming/gstreamer/gstreamerenv.cpp
|
|
|
|
|
2021-04-13 03:20:59 +08:00
|
|
|
# Utils (ITT tracing)
|
|
|
|
src/utils/itt.cpp
|
2018-09-27 02:50:39 +08:00
|
|
|
)
|
|
|
|
|
2018-11-13 22:48:10 +08:00
|
|
|
ocv_add_dispatched_file(backends/fluid/gfluidimgproc_func SSE4_1 AVX2)
|
2021-11-16 01:16:25 +08:00
|
|
|
ocv_add_dispatched_file(backends/fluid/gfluidcore_func SSE4_1 AVX2)
|
2018-11-13 22:48:10 +08:00
|
|
|
|
2018-09-27 02:50:39 +08:00
|
|
|
ocv_list_add_prefix(gapi_srcs "${CMAKE_CURRENT_LIST_DIR}/")
|
|
|
|
|
|
|
|
# For IDE users
|
|
|
|
ocv_source_group("Src" FILES ${gapi_srcs})
|
|
|
|
ocv_source_group("Include" FILES ${gapi_ext_hdrs})
|
|
|
|
|
|
|
|
ocv_set_module_sources(HEADERS ${gapi_ext_hdrs} SOURCES ${gapi_srcs})
|
|
|
|
ocv_module_include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
|
|
|
|
|
2019-12-06 21:36:42 +08:00
|
|
|
ocv_create_module()
|
|
|
|
|
2020-04-23 05:41:36 +08:00
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ade)
|
2021-04-13 03:20:59 +08:00
|
|
|
|
2022-01-15 05:53:19 +08:00
|
|
|
if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ocv.3rdparty.openvino)
|
2021-11-16 20:52:42 +08:00
|
|
|
endif()
|
|
|
|
|
2019-12-06 21:36:42 +08:00
|
|
|
if(HAVE_TBB)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE tbb)
|
|
|
|
endif()
|
|
|
|
|
2021-04-13 03:20:59 +08:00
|
|
|
# TODO: Consider support of ITT in G-API standalone mode.
|
|
|
|
if(CV_TRACE AND HAVE_ITT)
|
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DOPENCV_WITH_ITT=1)
|
|
|
|
ocv_module_include_directories(${ITT_INCLUDE_DIRS})
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${ITT_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
2020-04-23 05:41:36 +08:00
|
|
|
set(__test_extra_deps "")
|
2022-01-15 05:53:19 +08:00
|
|
|
if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
|
|
|
|
list(APPEND __test_extra_deps ocv.3rdparty.openvino)
|
2021-11-16 20:52:42 +08:00
|
|
|
endif()
|
2020-04-23 05:41:36 +08:00
|
|
|
ocv_add_accuracy_tests(${__test_extra_deps})
|
Merge pull request #17020 from dbudniko:dbudniko/serialization_backend
G-API Serialization routines
* Serialization backend in tests, initial version
* S11N/00: A Great Rename
- "Serialization" is too long and too error-prone to type,
so now it is renamed to "s11n" everywhere;
- Same applies to "SRLZ";
- Tests also renamed to start with 'S11N.*' (easier to run);
- Also updated copyright years in new files to 2020.
* S11N/01: Some basic interface segregation
- Moved some details (low-level functions) out of serialization.hpp;
- Introduced I::IStream and I::OStream interfaces;
- Implemented those via the existing [De]SerializationStream classes;
- Moved all operators to use interfaces instead of classes;
- Moved the htonl/ntohl handling out of operators (to the classes).
The implementation didn't change much, it is a subject to the further
refactoring
* S11N/02: Basic operator reorg, basic tests, vector support
- Reorganized operators on atomic types to follow >>/<< model
(put them closer in the code for the respective types);
- Introduce more operators for basic (scalar) types;
- Drop all vector s11n overloads -- replace with a generic
(template-based) one;
- Introduced a new test suite where low-level s11n functionality
is tested (for the basic types).
* S11N/03: Operators reorganization
- Sorted the Opaque types enum by complexity;
- Reorganized the existing operators for basic types, also ordered by
complexity;
- Organized operators in three groups (Basics, OpenCV, G-API);
- Added a generic serialization for variant<>;
- Reimplemented some of the existing operators (for OpenCV and G-API
data structures);
- Introduced new operators for cv::gimpl data types. These operators
(and so, the data structures) are not yet used in the graph
dump/reconstruction routine, it will be done as a next step.
* S11N/04: The Great Clean-up
- Drop the duplicates of GModel data structures from the
serialization, serialize the GModel data structures themselve
instead (hand-written code replaced with operators).
- Also removed usuned code for printing, etc.
* S11N/05: Internal API Clean-up
- Minimize the serialization API to just Streams and Operators;
- Refactor and fix the graph serialization (deconstruction and
reconstruction) routines, fix data addressing problems there;
- Move the serialization.[ch]pp files to the core G-API library
* S11N/06: Top-level API introduction
- !!!This is likely the most invasive commit in the series!!!
- Introduced a top-level API to serialize and deserialize a GComputation
- Extended the compiler to support both forms of a GComputation:
an expession based and a deserialized one. This has led to changes in
the cv::GComputation::Priv and in its dependent components (even the
transformation tests);
- Had to extend the kernel API (GKernel) with extra information on
operations (mainly `outMeta`) which was only available for expression
based graphs. Now the `outMeta` can be taken from kernels too (and for
the deserialized graphs it is the only way);
- Revisited the internal serialization API, had to expose previously
hidden entities (like `GSerialized`);
- Extended the serialized graph info with new details (object counter,
protocol). Added unordered_map generic serialization for that;
- Reworked the very first pipeline test to be "proper"; GREEN now, the rest
is to be reworked in the next iteration.
* S11N/07: Tests reworked
- Moved the sample pipeline tests w/serialization to
test the public API (`cv::gapi::serialize`, then
followed by `cv::gapi::deserialize<>`). All GREEN.
- As a consequence, dropped the "Serialization" test
backend as no longer necessary.
* S11N/08: Final touches
- Exposed the C++ native data types at Streams level;
- Switched the ByteMemoryIn/OutStreams to store data in `char`
internally (2x less memory for sample pipelines);
- Fixed and refactored Mat dumping to the stream;
- Renamed S11N pipeline tests to their new meaning.
* linux build fix
* fix RcDesc and int uint warnings
* more Linux build fix
* white space and virtual android error fix (attempt)
* more warnings to be fixed
* android warnings fix attempt
* one more attempt for android build fix
* android warnings one more fix
* return back override
* avoid size_t
* static deserialize
* and how do you like this, elon? anonymous namespace to fix android warning.
* static inline
* trying to fix standalone build
* mat dims fix
* fix mat r/w for standalone
Co-authored-by: Dmitry Matveev <dmitry.matveev@intel.com>
2020-06-27 03:41:29 +08:00
|
|
|
|
2018-09-27 02:50:39 +08:00
|
|
|
# FIXME: test binary is linked with ADE directly since ADE symbols
|
|
|
|
# are not exported from libopencv_gapi.so in any form - thus
|
|
|
|
# there're two copies of ADE code in memory when tests run (!)
|
|
|
|
# src/ is specified to include dirs for INTERNAL tests only.
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
target_include_directories(opencv_test_gapi PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
|
|
|
|
target_link_libraries(opencv_test_gapi PRIVATE ade)
|
|
|
|
endif()
|
|
|
|
|
2020-11-30 21:15:13 +08:00
|
|
|
if(HAVE_TBB AND TARGET opencv_test_gapi)
|
|
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE tbb)
|
|
|
|
endif()
|
|
|
|
|
2019-12-06 21:36:42 +08:00
|
|
|
if(HAVE_FREETYPE)
|
2020-02-03 21:41:31 +08:00
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_FREETYPE)
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_FREETYPE)
|
|
|
|
endif()
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${FREETYPE_LIBRARIES})
|
|
|
|
ocv_target_include_directories(${the_module} PRIVATE ${FREETYPE_INCLUDE_DIRS})
|
2019-12-03 18:13:06 +08:00
|
|
|
endif()
|
|
|
|
|
2022-01-18 06:56:01 +08:00
|
|
|
if(HAVE_OAK)
|
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_OAK)
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_OAK)
|
|
|
|
endif()
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE depthai::core)
|
|
|
|
endif()
|
|
|
|
|
2019-11-27 23:21:00 +08:00
|
|
|
if(HAVE_PLAIDML)
|
2020-02-03 21:41:31 +08:00
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_PLAIDML)
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_PLAIDML)
|
|
|
|
endif()
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${PLAIDML_LIBRARIES})
|
|
|
|
ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${PLAIDML_INCLUDE_DIRS})
|
2019-11-27 23:21:00 +08:00
|
|
|
endif()
|
|
|
|
|
2021-08-18 01:11:22 +08:00
|
|
|
if(HAVE_GAPI_ONEVPL)
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_ONEVPL)
|
|
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE ${VPL_IMPORTED_TARGETS})
|
2021-12-08 15:09:33 +08:00
|
|
|
if(MSVC)
|
|
|
|
target_compile_options(opencv_test_gapi PUBLIC "/wd4201")
|
|
|
|
endif()
|
2021-09-23 19:34:30 +08:00
|
|
|
if(HAVE_D3D11 AND HAVE_OPENCL)
|
|
|
|
ocv_target_include_directories(opencv_test_gapi SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
|
|
|
|
endif()
|
2021-08-18 01:11:22 +08:00
|
|
|
endif()
|
2022-05-12 16:42:38 +08:00
|
|
|
|
2021-08-18 01:11:22 +08:00
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_ONEVPL)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${VPL_IMPORTED_TARGETS})
|
2021-12-08 15:09:33 +08:00
|
|
|
|
2022-10-03 13:37:36 +08:00
|
|
|
if(HAVE_DIRECTX AND HAVE_D3D11)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE d3d11 dxgi)
|
|
|
|
endif()
|
|
|
|
if(WIN32)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE mf mfuuid mfplat shlwapi mfreadwrite)
|
|
|
|
endif()
|
2021-08-18 01:11:22 +08:00
|
|
|
if(HAVE_D3D11 AND HAVE_OPENCL)
|
|
|
|
ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
|
|
|
|
endif()
|
2022-05-12 16:42:38 +08:00
|
|
|
|
2022-10-28 02:25:36 +08:00
|
|
|
if(UNIX AND HAVE_VA)
|
|
|
|
ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${VA_INCLUDE_DIR})
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${VA_LIBRARIES})
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_include_directories(opencv_test_gapi SYSTEM PRIVATE ${VA_INCLUDE_DIR})
|
|
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE ${VA_LIBRARIES})
|
|
|
|
endif()
|
2022-05-12 16:42:38 +08:00
|
|
|
endif()
|
2021-08-18 01:11:22 +08:00
|
|
|
endif()
|
2020-11-04 02:39:16 +08:00
|
|
|
|
2021-12-08 18:45:02 +08:00
|
|
|
ocv_option(OPENCV_GAPI_GSTREAMER "Build G-API with GStreamer support" HAVE_GSTREAMER)
|
|
|
|
if(HAVE_GSTREAMER AND OPENCV_GAPI_GSTREAMER)
|
2021-12-07 00:54:21 +08:00
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_GSTREAMER)
|
|
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE ocv.3rdparty.gstreamer)
|
|
|
|
endif()
|
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_GSTREAMER)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ocv.3rdparty.gstreamer)
|
|
|
|
endif()
|
|
|
|
|
Merge pull request #17020 from dbudniko:dbudniko/serialization_backend
G-API Serialization routines
* Serialization backend in tests, initial version
* S11N/00: A Great Rename
- "Serialization" is too long and too error-prone to type,
so now it is renamed to "s11n" everywhere;
- Same applies to "SRLZ";
- Tests also renamed to start with 'S11N.*' (easier to run);
- Also updated copyright years in new files to 2020.
* S11N/01: Some basic interface segregation
- Moved some details (low-level functions) out of serialization.hpp;
- Introduced I::IStream and I::OStream interfaces;
- Implemented those via the existing [De]SerializationStream classes;
- Moved all operators to use interfaces instead of classes;
- Moved the htonl/ntohl handling out of operators (to the classes).
The implementation didn't change much, it is a subject to the further
refactoring
* S11N/02: Basic operator reorg, basic tests, vector support
- Reorganized operators on atomic types to follow >>/<< model
(put them closer in the code for the respective types);
- Introduce more operators for basic (scalar) types;
- Drop all vector s11n overloads -- replace with a generic
(template-based) one;
- Introduced a new test suite where low-level s11n functionality
is tested (for the basic types).
* S11N/03: Operators reorganization
- Sorted the Opaque types enum by complexity;
- Reorganized the existing operators for basic types, also ordered by
complexity;
- Organized operators in three groups (Basics, OpenCV, G-API);
- Added a generic serialization for variant<>;
- Reimplemented some of the existing operators (for OpenCV and G-API
data structures);
- Introduced new operators for cv::gimpl data types. These operators
(and so, the data structures) are not yet used in the graph
dump/reconstruction routine, it will be done as a next step.
* S11N/04: The Great Clean-up
- Drop the duplicates of GModel data structures from the
serialization, serialize the GModel data structures themselve
instead (hand-written code replaced with operators).
- Also removed usuned code for printing, etc.
* S11N/05: Internal API Clean-up
- Minimize the serialization API to just Streams and Operators;
- Refactor and fix the graph serialization (deconstruction and
reconstruction) routines, fix data addressing problems there;
- Move the serialization.[ch]pp files to the core G-API library
* S11N/06: Top-level API introduction
- !!!This is likely the most invasive commit in the series!!!
- Introduced a top-level API to serialize and deserialize a GComputation
- Extended the compiler to support both forms of a GComputation:
an expession based and a deserialized one. This has led to changes in
the cv::GComputation::Priv and in its dependent components (even the
transformation tests);
- Had to extend the kernel API (GKernel) with extra information on
operations (mainly `outMeta`) which was only available for expression
based graphs. Now the `outMeta` can be taken from kernels too (and for
the deserialized graphs it is the only way);
- Revisited the internal serialization API, had to expose previously
hidden entities (like `GSerialized`);
- Extended the serialized graph info with new details (object counter,
protocol). Added unordered_map generic serialization for that;
- Reworked the very first pipeline test to be "proper"; GREEN now, the rest
is to be reworked in the next iteration.
* S11N/07: Tests reworked
- Moved the sample pipeline tests w/serialization to
test the public API (`cv::gapi::serialize`, then
followed by `cv::gapi::deserialize<>`). All GREEN.
- As a consequence, dropped the "Serialization" test
backend as no longer necessary.
* S11N/08: Final touches
- Exposed the C++ native data types at Streams level;
- Switched the ByteMemoryIn/OutStreams to store data in `char`
internally (2x less memory for sample pipelines);
- Fixed and refactored Mat dumping to the stream;
- Renamed S11N pipeline tests to their new meaning.
* linux build fix
* fix RcDesc and int uint warnings
* more Linux build fix
* white space and virtual android error fix (attempt)
* more warnings to be fixed
* android warnings fix attempt
* one more attempt for android build fix
* android warnings one more fix
* return back override
* avoid size_t
* static deserialize
* and how do you like this, elon? anonymous namespace to fix android warning.
* static inline
* trying to fix standalone build
* mat dims fix
* fix mat r/w for standalone
Co-authored-by: Dmitry Matveev <dmitry.matveev@intel.com>
2020-06-27 03:41:29 +08:00
|
|
|
if(WIN32)
|
|
|
|
# Required for htonl/ntohl on Windows
|
2020-06-30 01:46:09 +08:00
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE wsock32 ws2_32)
|
Merge pull request #17020 from dbudniko:dbudniko/serialization_backend
G-API Serialization routines
* Serialization backend in tests, initial version
* S11N/00: A Great Rename
- "Serialization" is too long and too error-prone to type,
so now it is renamed to "s11n" everywhere;
- Same applies to "SRLZ";
- Tests also renamed to start with 'S11N.*' (easier to run);
- Also updated copyright years in new files to 2020.
* S11N/01: Some basic interface segregation
- Moved some details (low-level functions) out of serialization.hpp;
- Introduced I::IStream and I::OStream interfaces;
- Implemented those via the existing [De]SerializationStream classes;
- Moved all operators to use interfaces instead of classes;
- Moved the htonl/ntohl handling out of operators (to the classes).
The implementation didn't change much, it is a subject to the further
refactoring
* S11N/02: Basic operator reorg, basic tests, vector support
- Reorganized operators on atomic types to follow >>/<< model
(put them closer in the code for the respective types);
- Introduce more operators for basic (scalar) types;
- Drop all vector s11n overloads -- replace with a generic
(template-based) one;
- Introduced a new test suite where low-level s11n functionality
is tested (for the basic types).
* S11N/03: Operators reorganization
- Sorted the Opaque types enum by complexity;
- Reorganized the existing operators for basic types, also ordered by
complexity;
- Organized operators in three groups (Basics, OpenCV, G-API);
- Added a generic serialization for variant<>;
- Reimplemented some of the existing operators (for OpenCV and G-API
data structures);
- Introduced new operators for cv::gimpl data types. These operators
(and so, the data structures) are not yet used in the graph
dump/reconstruction routine, it will be done as a next step.
* S11N/04: The Great Clean-up
- Drop the duplicates of GModel data structures from the
serialization, serialize the GModel data structures themselve
instead (hand-written code replaced with operators).
- Also removed usuned code for printing, etc.
* S11N/05: Internal API Clean-up
- Minimize the serialization API to just Streams and Operators;
- Refactor and fix the graph serialization (deconstruction and
reconstruction) routines, fix data addressing problems there;
- Move the serialization.[ch]pp files to the core G-API library
* S11N/06: Top-level API introduction
- !!!This is likely the most invasive commit in the series!!!
- Introduced a top-level API to serialize and deserialize a GComputation
- Extended the compiler to support both forms of a GComputation:
an expession based and a deserialized one. This has led to changes in
the cv::GComputation::Priv and in its dependent components (even the
transformation tests);
- Had to extend the kernel API (GKernel) with extra information on
operations (mainly `outMeta`) which was only available for expression
based graphs. Now the `outMeta` can be taken from kernels too (and for
the deserialized graphs it is the only way);
- Revisited the internal serialization API, had to expose previously
hidden entities (like `GSerialized`);
- Extended the serialized graph info with new details (object counter,
protocol). Added unordered_map generic serialization for that;
- Reworked the very first pipeline test to be "proper"; GREEN now, the rest
is to be reworked in the next iteration.
* S11N/07: Tests reworked
- Moved the sample pipeline tests w/serialization to
test the public API (`cv::gapi::serialize`, then
followed by `cv::gapi::deserialize<>`). All GREEN.
- As a consequence, dropped the "Serialization" test
backend as no longer necessary.
* S11N/08: Final touches
- Exposed the C++ native data types at Streams level;
- Switched the ByteMemoryIn/OutStreams to store data in `char`
internally (2x less memory for sample pipelines);
- Fixed and refactored Mat dumping to the stream;
- Renamed S11N pipeline tests to their new meaning.
* linux build fix
* fix RcDesc and int uint warnings
* more Linux build fix
* white space and virtual android error fix (attempt)
* more warnings to be fixed
* android warnings fix attempt
* one more attempt for android build fix
* android warnings one more fix
* return back override
* avoid size_t
* static deserialize
* and how do you like this, elon? anonymous namespace to fix android warning.
* static inline
* trying to fix standalone build
* mat dims fix
* fix mat r/w for standalone
Co-authored-by: Dmitry Matveev <dmitry.matveev@intel.com>
2020-06-27 03:41:29 +08:00
|
|
|
endif()
|
|
|
|
|
2020-11-04 02:39:16 +08:00
|
|
|
if(HAVE_ONNX)
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${ONNX_LIBRARY})
|
|
|
|
ocv_target_compile_definitions(${the_module} PRIVATE HAVE_ONNX=1)
|
|
|
|
if(TARGET opencv_test_gapi)
|
|
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE HAVE_ONNX=1)
|
|
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE ${ONNX_LIBRARY})
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2018-09-27 02:50:39 +08:00
|
|
|
ocv_add_perf_tests()
|
2018-10-24 12:47:56 +08:00
|
|
|
ocv_add_samples()
|
2021-10-20 17:43:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Required for sample with inference on host
|
2022-09-23 19:08:29 +08:00
|
|
|
if(TARGET example_gapi_onevpl_infer_with_advanced_device_selection)
|
2022-01-15 05:53:19 +08:00
|
|
|
if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
|
2022-09-23 19:08:29 +08:00
|
|
|
ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE ocv.3rdparty.openvino)
|
2021-10-20 17:43:32 +08:00
|
|
|
endif()
|
2022-10-03 13:37:36 +08:00
|
|
|
if(HAVE_DIRECTX AND HAVE_D3D11)
|
2022-09-23 19:08:29 +08:00
|
|
|
ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE d3d11 dxgi)
|
2022-10-03 13:37:36 +08:00
|
|
|
endif()
|
2021-10-20 17:43:32 +08:00
|
|
|
if(HAVE_D3D11 AND HAVE_OPENCL)
|
2022-09-23 19:08:29 +08:00
|
|
|
ocv_target_include_directories(example_gapi_onevpl_infer_with_advanced_device_selection SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
|
2021-10-20 17:43:32 +08:00
|
|
|
endif()
|
2022-10-28 02:25:36 +08:00
|
|
|
if(UNIX AND HAVE_VA)
|
2022-07-08 22:15:31 +08:00
|
|
|
message ("GAPI VPL samples with VAAPI")
|
2022-09-23 19:08:29 +08:00
|
|
|
ocv_target_include_directories(example_gapi_onevpl_infer_with_advanced_device_selection SYSTEM PRIVATE ${VA_INCLUDE_DIR})
|
|
|
|
ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE ${VA_LIBRARIES})
|
2022-07-08 16:40:25 +08:00
|
|
|
endif()
|
2021-10-20 17:43:32 +08:00
|
|
|
endif()
|
2021-11-10 21:21:51 +08:00
|
|
|
|
2022-02-01 21:32:56 +08:00
|
|
|
if(TARGET example_gapi_pipeline_modeling_tool)
|
|
|
|
if(WIN32)
|
|
|
|
ocv_target_link_libraries(example_gapi_pipeline_modeling_tool winmm.lib)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2021-11-10 21:21:51 +08:00
|
|
|
# perf test dependencies postprocessing
|
|
|
|
if(HAVE_GAPI_ONEVPL)
|
|
|
|
# NB: TARGET opencv_perf_gapi doesn't exist before `ocv_add_perf_tests`
|
2022-02-24 18:35:52 +08:00
|
|
|
# src/ is specified to include dirs for INTERNAL tests only.
|
2021-11-10 21:21:51 +08:00
|
|
|
if(TARGET opencv_perf_gapi)
|
2022-02-24 18:35:52 +08:00
|
|
|
target_include_directories(opencv_perf_gapi PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
|
2021-11-10 21:21:51 +08:00
|
|
|
ocv_target_compile_definitions(opencv_perf_gapi PRIVATE -DHAVE_ONEVPL)
|
|
|
|
ocv_target_link_libraries(opencv_perf_gapi PRIVATE ${VPL_IMPORTED_TARGETS})
|
|
|
|
if(HAVE_D3D11 AND HAVE_OPENCL)
|
|
|
|
ocv_target_include_directories(opencv_perf_gapi SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|