/*************************************************************************************** * * IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. * * By downloading, copying, installing or using the software you agree to this license. * If you do not agree to this license, do not download, install, * copy or use the software. * * Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved. * * Redistribution and use in binary forms, with or without modification, are permitted. * * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. * ****************************************************************************************/ #include "sys_inc.h" #include "config.h" #include "utils.h" #include #include #include #include #include #include #include #include #include #include QString getSnapshotPath() { #if defined(IOS) return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last(); #else return QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last(); #endif } QString getRecordPath() { #if defined(IOS) return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last(); #else return QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).last(); #endif } QString getOpenFilePath() { QSettings setting; return setting.value("openFilePath").toString(); } BOOL getEnableLogFlag() { QSettings setting; return setting.value("enableLog", 1).toInt(); } int getVideoRenderMode() { QSettings setting; return setting.value("videoRenderMode", 0).toInt(); } BOOL getRtpMulticast() { QSettings setting; return setting.value("rtpMulticast", 0).toInt(); } BOOL getRtpOverUdp() { QSettings setting; return setting.value("rtpOverUdp", 0).toInt(); } BOOL getRtspOverHttp() { QSettings setting; return setting.value("rtspOverHttp", 0).toInt(); } int getRtspOverHttpPort() { QSettings setting; return setting.value("rtspOverHttpPort", 80).toInt(); } BOOL getRtspOverWs() { QSettings setting; return setting.value("rtspOverWs", 0).toInt(); } int getRtspOverWsPort() { QSettings setting; return setting.value("rtspOverWsPort", 80).toInt(); } int getLogLevel() { QSettings setting; return setting.value("logLevel", 2).toInt(); } int getSysLang() { QSettings setting; return setting.value("sysLang", 0).toInt(); } int getRecordTime() { QSettings setting; return setting.value("recordTime", 0).toInt(); } int getRecordSize() { QSettings setting; return setting.value("recordSize", 0).toInt(); } int getHWDecoding() { QSettings setting; return setting.value("HWDecoding", 0).toInt(); } int getLayoutMode() { QSettings setting; return setting.value("layoutMode", 4).toInt(); } BOOL getChannels(QList & channels) { QSettings settings; int size = settings.beginReadArray("Channels"); for (int i = 0; i < size; ++i) { settings.setArrayIndex(i); CHANNEL channel; channel.url = settings.value("Url").toString(); channel.user = settings.value("User").toString(); channel.pass = settings.value("Pass").toString(); channels.append(channel); } settings.endArray(); return TRUE; } QString getTempFile(QString prefix, QString extName) { QDateTime tm = QDateTime::currentDateTime(); QString time; QString fileName; time = QString::asprintf("%04d%02d%02d_%02d%02d%02d", tm.date().year(), tm.date().month(), tm.date().day(), tm.time().hour(), tm.time().minute(), tm.time().second()); fileName = prefix + "_" + time + extName; return fileName; } void saveOpenFilePath(QString path) { QSettings setting; setting.setValue("openFilePath", path); } void saveEnableLogFlag(BOOL flag) { QSettings setting; setting.setValue("enableLog", flag); } void saveVideoRenderMode(int mode) { QSettings setting; setting.setValue("videoRenderMode", mode); } void saveRtpMulticast(BOOL flag) { QSettings setting; setting.setValue("rtpMulticast", flag); } void saveRtpOverUdp(BOOL flag) { QSettings setting; setting.setValue("rtpOverUdp", flag); } void saveRtspOverHttp(BOOL flag) { QSettings setting; setting.setValue("rtspOverHttp", flag); } void saveRtspOverHttpPort(int port) { QSettings setting; setting.setValue("rtspOverHttpPort", port); } void saveRtspOverWs(BOOL flag) { QSettings setting; setting.setValue("rtspOverWs", flag); } void saveRtspOverWsPort(int port) { QSettings setting; setting.setValue("rtspOverWsPort", port); } void saveLogLevel(int level) { QSettings setting; setting.setValue("logLevel", level); } void saveSysLang(int lang) { QSettings setting; setting.setValue("sysLang", lang); } void saveRecordTime(int value) { QSettings setting; setting.setValue("recordTime", value); } void saveRecordSize(int value) { QSettings setting; setting.setValue("recordSize", value); } void saveHWDecoding(int value) { QSettings setting; setting.setValue("HWDecoding", value); } void saveLayoutMode(int value) { QSettings setting; setting.setValue("layoutMode", value); } void saveChannels(QList & channels) { QSettings settings; settings.beginWriteArray("Channels"); for (int i = 0; i < channels.size(); ++i) { settings.setArrayIndex(i); settings.setValue("Url", channels[i].url); settings.setValue("User", channels[i].user); settings.setValue("Pass", channels[i].pass); } settings.endArray(); } BOOL isUrl(QString url) { BOOL isUrl = 0; if (isRtspUrl(url)) { isUrl = 1; } else if (isRtmpUrl(url)) { isUrl = 1; } else if (isHttpUrl(url)) { isUrl = 1; } else if (isSrtUrl(url)) { isUrl = 1; } return isUrl; } BOOL isRtspUrl(QString url) { BOOL isUrl = 0; if (url.startsWith("rtsp://")) { isUrl = 1; } #ifdef OVER_WEBSOCKET else if (url.startsWith("ws://")) { // rtsp over websocket isUrl = 1; } #ifdef HTTPS else if (url.startsWith("wss://")) { // rtsp over websocket isUrl = 1; } #endif #endif return isUrl; } BOOL isRtmpUrl(QString url) { BOOL isUrl = 0; if (url.startsWith("rtmp://") || url.startsWith("rtmpt://") || url.startsWith("rtmps://") || url.startsWith("rtmpe://") || url.startsWith("rtmpfp://") || url.startsWith("rtmpte://") || url.startsWith("rtmpts://")) { isUrl = 1; } return isUrl; } BOOL isHttpUrl(QString url) { BOOL isUrl = 0; if (url.startsWith("http://")) { isUrl = 1; } #ifdef HTTPS else if (url.startsWith("https://")) { isUrl = 1; } #endif return isUrl; } BOOL isSrtUrl(QString url) { BOOL isUrl = 0; if (url.startsWith("srt://")) { isUrl = 1; } return isUrl; }