From b690694e583eadc79f83a60605af5fb6aef20caa Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Mon, 20 Aug 2018 18:27:01 +0300 Subject: [PATCH] - fully decoupled from linking with sevana libraris --- src/engine/media/MT_SevanaMos.cpp | 191 ------------------------------ src/engine/media/MT_SevanaMos.h | 41 ------- 2 files changed, 232 deletions(-) diff --git a/src/engine/media/MT_SevanaMos.cpp b/src/engine/media/MT_SevanaMos.cpp index 698f7974..7c62a244 100644 --- a/src/engine/media/MT_SevanaMos.cpp +++ b/src/engine/media/MT_SevanaMos.cpp @@ -29,11 +29,6 @@ extern std::string IntervalCacheDir; #define LOG_SUBSYSTEM "Sevana" -#ifdef WIN32 -# define popen _popen -# define pclose _pclose -#endif - #define PVQA_ECHO_DETECTOR_NAME "ECHO" //#define PVQA_ECHO_DETECTOR_NAME "EchoM-00" @@ -67,192 +62,6 @@ static std::string execCommand(const std::string& cmd) return result; } -// ------------ PvqaUtility ------------ -PvqaUtility::PvqaUtility() -{ - -} - -PvqaUtility::~PvqaUtility() -{ - -} - -void PvqaUtility::setPath(const std::string& path) -{ - mPvqaPath = path; -} - -std::string PvqaUtility::getPath() const -{ - return mPvqaPath; -} - -void PvqaUtility::setLicensePath(const std::string& path) -{ - mLicensePath = path; -} - -std::string PvqaUtility::getLicensePath() const -{ - return mLicensePath; -} - -void PvqaUtility::setConfigPath(const std::string& path) -{ - mConfigPath = path; -} - -std::string PvqaUtility::getConfigPath() const -{ - return mConfigPath; -} - -float PvqaUtility::process(const std::string& filepath, std::string& outputReport) -{ - float result = 0.0f; - - // Generate temporary filename to receive .csv file - char report_filename[L_tmpnam]; - tmpnam(report_filename); - - // Build command line - char cmdbuffer[1024]; - sprintf(cmdbuffer, "\"%s\" \"%s\" analysis \"%s\" \"%s\" \"%s\" 0.799", mPvqaPath.c_str(), mLicensePath.c_str(), - report_filename, mConfigPath.c_str(), filepath.c_str()); - try - { - std::string output = execCommand(cmdbuffer); - - std::string line; - std::istringstream is(output); - std::string estimation; - while (std::getline(is, line)) - { - std::string::size_type mosPosition = line.find("MOS = "); - if ( mosPosition != std::string::npos) - { - estimation = line.substr(mosPosition + 6); - estimation = StringHelper::trim(estimation); - } - } - - if (!estimation.size()) - throw std::runtime_error("Bad response from pvqa: " + output); - - result = std::stof(estimation); - - // Read intervals report file - std::ifstream t(report_filename); - std::string str((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); - outputReport = str; - ::remove(report_filename); - ::remove(report_filename); - } - catch (std::exception& e) - { - std::cerr << e.what() << "\n"; - } - - return result; -} - -// ---------------- AquaUtility ----------------- -AquaUtility::AquaUtility() -{} - -AquaUtility::~AquaUtility() -{} - -void AquaUtility::setPath(const std::string& path) -{ - mAquaPath = path; -} - -std::string AquaUtility::getPath() const -{ - return mAquaPath; -} - -void AquaUtility::setLicensePath(const std::string& path) -{ - mLicensePath = path; -} - -std::string AquaUtility::getLicensePath() const -{ - return mLicensePath; -} - -void AquaUtility::setConfigLine(const std::string& line) -{ - mConfigLine = line; -} - -std::string AquaUtility::getConfigLine() const -{ - return mConfigLine; -} - -float AquaUtility::compare(const std::string& src_path, const std::string& dst_path, std::string& output_report) -{ - float result = 0.0f; - - // Generate temporary filename to receive .csv file - char spectrum_filename[L_tmpnam], report_filename[L_tmpnam]; - tmpnam(spectrum_filename); - tmpnam(report_filename); - - std::string config_line = mConfigLine; - StringHelper::replace(config_line, ":src_file", "\"" + src_path + "\""); - StringHelper::replace(config_line, ":tst_file", "\"" + dst_path + "\""); - StringHelper::replace(config_line, ":spectrum_file", spectrum_filename); - StringHelper::replace(config_line, ":report_file", report_filename); - StringHelper::replace(config_line, ":license_file", "\"" + mLicensePath + "\""); - - // Build command line - char cmdbuffer[2048]; - sprintf(cmdbuffer, "\"%s\" %s", mAquaPath.c_str(), config_line.c_str()); - - try - { - std::string output = execCommand(cmdbuffer); - - std::string line; - std::istringstream is(output); - std::string estimation; - while (std::getline(is, line)) - { - std::string::size_type mosPosition = line.find("MOS value "); - if ( mosPosition != std::string::npos) - { - estimation = line.substr(mosPosition + 6); - estimation = StringHelper::trim(estimation); - } - } - - if (!estimation.size()) - throw std::runtime_error("Bad response from pvqa: " + output); - - result = std::stof(estimation); - - // Read intervals report file - std::ifstream t(report_filename); - std::string str((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); - - output_report = str; - ::remove(report_filename); - ::remove(report_filename); - } - catch (std::exception& e) - { - std::cerr << e.what() << "\n"; - } - - return result; -} // -------------- SevanaMosUtility -------------- void SevanaMosUtility::run(const std::string& pcmPath, const std::string& intervalPath, diff --git a/src/engine/media/MT_SevanaMos.h b/src/engine/media/MT_SevanaMos.h index 945ce0b8..d03eaff4 100644 --- a/src/engine/media/MT_SevanaMos.h +++ b/src/engine/media/MT_SevanaMos.h @@ -30,47 +30,6 @@ enum class ReportType Html }; -class PvqaUtility -{ -public: - PvqaUtility(); - ~PvqaUtility(); - - void setPath(const std::string& path); - std::string getPath() const; - - void setLicensePath(const std::string& path); - std::string getLicensePath() const; - - void setConfigPath(const std::string& path); - std::string getConfigPath() const; - - float process(const std::string& path, std::string& report); -private: - std::string mPvqaPath, mLicensePath, mConfigPath; -}; - -class AquaUtility -{ -public: - AquaUtility(); - ~AquaUtility(); - - void setPath(const std::string& path); - std::string getPath() const; - - void setLicensePath(const std::string& path); - std::string getLicensePath() const; - - void setConfigLine(const std::string& line); - std::string getConfigLine() const; - - float compare(const std::string& src, const std::string& dst, std::string& outputReport); - -protected: - std::string mAquaPath, mLicensePath, mConfigLine; -}; - #if defined(USE_PVQA_LIBRARY) class SevanaMosUtility {