From 822dab00b5823a6a4608af9b1a4c6801cfe7db5b Mon Sep 17 00:00:00 2001 From: Dmitry Budnikov Date: Wed, 12 Jan 2022 20:38:14 +0300 Subject: [PATCH] Adapt remote inference to operate with NV12 blobs * Media Frame Adapter support * address comments original commit: 19bbe6c67da7b505386d585d61a2208534db2408 --- modules/gapi/src/backends/ie/giebackend.cpp | 27 +++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/gapi/src/backends/ie/giebackend.cpp b/modules/gapi/src/backends/ie/giebackend.cpp index 5e0c63dc3a..9efd2a8d17 100644 --- a/modules/gapi/src/backends/ie/giebackend.cpp +++ b/modules/gapi/src/backends/ie/giebackend.cpp @@ -19,6 +19,8 @@ #include #include #include +#include + #include @@ -507,18 +509,27 @@ inline IE::Blob::Ptr extractRemoteBlob(IECallContext& ctx, std::size_t i) { cv::util::any any_blob_params = ctx.inFrame(i).blobParams(); auto ie_core = cv::gimpl::ie::wrap::getCore(); - using ParamType = std::pair; + using ParamType = std::pair; + using NV12ParamType = std::pair; - ParamType* blob_params = cv::util::any_cast(&any_blob_params); + NV12ParamType* blob_params = cv::util::any_cast(&any_blob_params); if (blob_params == nullptr) { - GAPI_Assert(false && "Incorrect type of blobParams: " - "expected std::pair"); + GAPI_Assert(false && "Incorrect type of blobParams:" + "expected std::pair," + "with ParamType std::pair>"); } - return ctx.uu.rctx->CreateBlob(blob_params->first, - blob_params->second); + //The parameters are TensorDesc and ParamMap for both y and uv blobs + auto y_blob = ctx.uu.rctx->CreateBlob(blob_params->first.first, blob_params->first.second); + auto uv_blob = ctx.uu.rctx->CreateBlob(blob_params->second.first, blob_params->second.second); + +#if INF_ENGINE_RELEASE >= 2021010000 + return IE::make_shared_blob(y_blob, uv_blob); +#else + return IE::make_shared_blob(y_blob, uv_blob); +#endif + } inline IE::Blob::Ptr extractBlob(IECallContext& ctx,