diff options
| author | Eric Dao <eric@erickhangdao.com> | 2025-03-10 17:54:31 -0400 |
|---|---|---|
| committer | Eric Dao <eric@erickhangdao.com> | 2025-03-10 17:54:31 -0400 |
| commit | ab224e2e6ba65f5a369ec392f99cd8845ad06c98 (patch) | |
| tree | a1e757e9341863ed52b8ad4c5a1c45933aab9da4 /python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h | |
| parent | 40da1752f2c8639186b72f6838aa415e854d0b1d (diff) | |
| download | thesis-master.tar.gz thesis-master.tar.bz2 thesis-master.zip | |
Diffstat (limited to 'python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h')
| -rw-r--r-- | python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h b/python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h new file mode 100644 index 0000000..0693ef8 --- /dev/null +++ b/python/openvino/runtime/streaming/image_streaming_app/image_streaming_app.h @@ -0,0 +1,79 @@ +// Copyright 2023 Intel Corporation. +// +// This software and the related documents are Intel copyrighted materials, +// and your use of them is governed by the express license under which they +// were provided to you ("License"). Unless the License provides otherwise, +// you may not use, modify, copy, publish, distribute, disclose or transmit +// this software or the related documents without Intel's prior written +// permission. +// +// This software and the related documents are provided as is, with no express +// or implied warranties, other than those that are expressly stated in the +// License. + +#pragma once +#include <condition_variable> +#include <filesystem> +#include <vector> +#include <semaphore.h> +#include "ILayoutTransform.h" +#include "command_line.h" + +using namespace std::chrono_literals; + +class RawImage; + +class Event { + public: + void Wait() { + std::unique_lock<std::mutex> lock(_signalMutex); + _conditionVariable.wait(lock); + } + + void Set() { + std::lock_guard<std::mutex> lock(_signalMutex); + _conditionVariable.notify_all(); + } + + bool IsSignalled() { + std::unique_lock<std::mutex> lock(_signalMutex); + return (_conditionVariable.wait_for(lock, 0ms) != std::cv_status::timeout); + } + + private: + std::mutex _signalMutex; + std::condition_variable _conditionVariable; +}; + +class ImageStreamingApp { + public: + ImageStreamingApp(int numParams, char* paramValues[]); + void Run(); + + private: + bool ProgramLayoutTransform(); + bool SendNextImage(); + bool LoadImageFiles(bool dumpLayoutTransform); + void RunSendImageSignalThread(); + static void SigIntHandler(int); + uint32_t GetUintOption(const char* optionName, uint32_t defaultValue); + float GetFloatOption(const char* optionName, float defaultValue); + bool OpenMsgDmaStream(); + void CloseMsgDmaStream(); + bool WaitForInferenceApp(); + + CommandLine _commandLine; + std::filesystem::path _imageFilesFolder; + std::string _imageFile; + std::vector<std::shared_ptr<RawImage>> _images; + Event _sendNextImageEvent; + static volatile bool _shutdownEvent; + size_t _nextImageIndex = 0; + uint32_t _numToSend = 0; + uint32_t _sendRate = 30; + uint32_t _sentCount = 0; + bool _dumpTransformedImages = false; + bool _runLayoutTransform = true; + FILE* _msgDmaStream = nullptr; + ILayoutTransform::Configuration _ltConfiguration = {}; +}; |
