#pragma once #include "IStream.h" #include #include #include #if !defined(FSDK_VERSION_MAJOR) #error "FsdkVersion.h header is needed, but not included here" #endif #if FSDK_VERSION_MAJOR >= 5 #include #endif namespace vsdk { struct IVehicleEngine; } namespace tsdk { struct ITrackEngine : fsdk::IRefCounted { /** * @brief Stops processing with all queued callbacks waiting. * @note It is a blocking function, which will wait all stored callbacks * execution. */ TRACK_ENGINE_API virtual void stop() = 0; /** * @brief Create the Stream object. * @return Pointer to created object or nullptr if failed. * */ TRACK_ENGINE_API virtual tsdk::IStream* createStream(StreamParams *params = nullptr) = 0; /** @brief Sets a best shot observer for all streams * @param observer pointer to the observer object, @see IBatchBestShotObserver */ TRACK_ENGINE_API virtual void setBatchBestShotObserver( tsdk::IBatchBestShotObserver *observer) = 0; /** @brief Sets a visual observer for all streams * @param observer pointer to the observer object, @see IBatchVisualObserver */ TRACK_ENGINE_API virtual void setBatchVisualObserver( tsdk::IBatchVisualObserver *observer) = 0; /** @brief Sets a debug observer for all streams * @param observer pointer to the observer object, @see IBatchDebugObserver */ TRACK_ENGINE_API virtual void setBatchDebugObserver( tsdk::IBatchDebugObserver *observer) = 0; }; /** * @brief Create the TrackerEngine object by config path. * @param [in] engine pointer to the FaceEngine object; * @param [in] configPath configuration file path; * @param [in] vehicleEngine pointer to the VehicleEngine object; * @param [in] launchOptions launch options for sdk functions; * @return fsdk ResultValue object, where value is track engine object reference. * */ TRACK_ENGINE_API fsdk::ResultValue> createTrackEngine( fsdk::FaceEngineType* engine, const char* configPath = nullptr, vsdk::IVehicleEngine* vehicleEngine = nullptr #if FSDK_VERSION_MAJOR >= 5 , const fsdk::LaunchOptions *launchOptions = nullptr #endif ); /** * @brief Create the TrackerEngine object by settings provider. * @param [in] engine pointer to the FaceEngine object; * @param [in] settings provider with configuration; * @param [in] vehicleEngine pointer to the VehicleEngine object; * @param [in] launchOptions launch options for sdk functions; * @return fsdk ResultValue object, where value is track engine object reference. * */ TRACK_ENGINE_API fsdk::ResultValue> createTrackEngine( fsdk::FaceEngineType* engine, const fsdk::ISettingsProviderPtr& provider, vsdk::IVehicleEngine* vehicleEngine = nullptr #if FSDK_VERSION_MAJOR >= 5 , const fsdk::LaunchOptions *launchOptions = nullptr #endif ); }