mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Fix bugs with hanging frames
This commit is contained in:
@@ -630,6 +630,11 @@ void cv::gimpl::ie::RequestPool::callback(cv::gimpl::ie::RequestPool::Task task,
|
||||
InferenceEngine::InferRequest& request,
|
||||
size_t id) {
|
||||
task.callback(request);
|
||||
// NB: IE::InferRequest keeps the callback until the new one is set.
|
||||
// Since user's callback might keep resources that should be released,
|
||||
// need to destroy its after execution.
|
||||
// Let's set the empty one to cause the destruction of a callback.
|
||||
request.SetCompletionCallback([](){});
|
||||
m_idle_ids.push(id);
|
||||
}
|
||||
|
||||
@@ -831,7 +836,6 @@ static void PostOutputs(InferenceEngine::InferRequest &request,
|
||||
auto output = ctx->output(i);
|
||||
ctx->out.meta(output, ctx->input(0).meta);
|
||||
ctx->out.post(std::move(output));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -347,6 +347,10 @@ bool QueueReader::getInputVector(std::vector<Q*> &in_queues,
|
||||
cv::GRunArgs &in_constants,
|
||||
cv::GRunArgs &isl_inputs)
|
||||
{
|
||||
// NB: Need to release resources from the previous step, to fetch new ones.
|
||||
// On some systems it might be impossible to allocate new memory
|
||||
// until the old one is released.
|
||||
m_cmd.clear();
|
||||
// NOTE: in order to maintain the GRunArg's underlying object
|
||||
// lifetime, keep the whole cmd vector (of size == # of inputs)
|
||||
// in memory.
|
||||
|
||||
Reference in New Issue
Block a user